web-dev-qa-db-ja.com

JOptionPaneの背景色を変更するにはどうすればよいですか?

アプリケーションに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) {                  }`
11
itro

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);
15
Mob

JOptionPane画像

画像に問題がある人のために、私は解決策を見つけて適応させました。私のシステムでは、他の人が投稿したように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は以前に作成されています。これがその問題を抱えている人に役立つことを願っています。

4
eric k atwood

このようなものを使用して、システム全体ではなく、この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);
2
Amy Saari

Erik k atwoodと同じ問題がある場合は、このコードを使用してください。これは問題を解決します:

UIManager.put("OptionPane.background", Color.WHITE);
UIManager.getLookAndFeelDefaults().put("Panel.background", Color.WHITE);
1
Zsolt Ébel