アプリケーションにJOptionPaneを追加しましたが、背景色を白に変更する方法がわかりませんか?
`int option = JOptionPane.showConfirmDialog(bcfiDownloadPanel,
new Object[]{"Host: " + source, panel},
"Authorization Required",
JOptionPane.OK_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE
);
if (option == JOptionPane.OK_OPTION) { }`
UIManager
クラスを使用する
import javax.swing.UIManager;
UIManager UI=new UIManager();
UI.put("OptionPane.background",new ColorUIResource(255,0,0));
UI.put("Panel.background",new ColorUIResource(255,0,0));
または
UIManager UI=new UIManager();
UI.put("OptionPane.background", Color.white);
UI.put("Panel.background", Color.white);
JOptionPane.showMessageDialog(null,"Text","SetColor",JOptionPane.INFORMATION_MESSAGE);
画像に問題がある人のために、私は解決策を見つけて適応させました。私のシステムでは、他の人が投稿したようにUIManagerソリューションを使用したか、JDialogを作成してjd.getContentPane()。setBackground(Color.white)を使用したかにかかわらず、その結果が得られました。そこで、私が思いついた回避策を次に示します。ここでは、JOptionPaneの各コンポーネントを再帰的にループし、各JPanelの背景色を設定します。
private void getComponents(Container c){
Component[] m = c.getComponents();
for(int i = 0; i < m.length; i++){
if(m[i].getClass().getName() == "javax.swing.JPanel")
m[i].setBackground(Color.white);
if(c.getClass().isInstance(m[i]));
getComponents((Container)m[i]);
}
}
メッセージをポップアップさせたいコードでは、次の行に沿ったものがあります。
pane = new JOptionPane("Your message here",
JOptionPane.PLAIN_MESSAGE ,JOptionPane.DEFAULT_OPTION);
getComponents(pane);
pane.setBackground(Color.white);
jd = pane.createDialog(this, "Message");
jd.setVisible(true);
どこ JOptionPane pane
およびJDialog jd
は以前に作成されています。これがその問題を抱えている人に役立つことを願っています。
このようなものを使用して、システム全体ではなく、この1つのメッセージ表示の背景色を変更します...
Object paneBG = UIManager.get("OptionPane.background");
Object panelBG = UIManager.get("Panel.background");
UIManager.put("OptionPane.background", new Color(...));
UIManager.put("Panel.background", new Color(...));
int ret = messageBox(msg, null, (short)type);
UIManager.put("OptionPane.background", paneBG);
UIManager.put("Panel.background", panelBG);
Erik k atwoodと同じ問題がある場合は、このコードを使用してください。これは問題を解決します:
UIManager.put("OptionPane.background", Color.WHITE);
UIManager.getLookAndFeelDefaults().put("Panel.background", Color.WHITE);