How to change the button backgrounds inside JOptionPane

后端 未结 4 777
情书的邮戳
情书的邮戳 2020-12-30 17:24

I was wondering if anybody knew if it was possible to change the background color on the buttons inside a JOptionPane. I know how to change the entire JO

相关标签:
4条回答
  • 2020-12-30 17:58

    Simplest would be to just create your own JDialog and set the button characteristics to your heart's content.

    0 讨论(0)
  • 2020-12-30 17:59

    You can use your own buttons with yours characteristics in showOptionDialog. I guess it is not the best solution, but it simply works.

    JButton button = new JButton("OK");
    button.setBackground(Color.BLACK);
    button.setForeground(Color.WHITE);
    button.addActionListener(new ActionListener() {
       @Override
       public void actionPerformed(ActionEvent actionEvent) {
           JOptionPane.getRootFrame().dispose();
       }
    });
    JButton[] buttons = { button };
    OptionPane.showOptionDialog(null, "Test Message", "Dialog", JOptionPane.OK_OPTION, JOptionPane.INFORMATION_MESSAGE, new ImageIcon(), buttons, buttons[0]);
    

    0 讨论(0)
  • 2020-12-30 18:05

    There is no direct way to do this.

    But if you really want to give it a try, then you will need to read the JOptionPane API which gives code that shows you how to manually create and display a JOptionPane without using the showXXX methods.

    Using this approach you now have access to the actuall JDialog. Then you can use Darryl's SwingUtils to access the individual buttons and then set the background.

    The code would be something like:

    JButton ok = SwingUtils.getDescendantOfType(JButton.class, dialog, "Text", "Ok");
    ok.setBackground(...);
    
    0 讨论(0)
  • 2020-12-30 18:10

    Add the the line of code below before your JOptionPane

    UIManager.put("Button.background", Color.white);
    JOptionPane.showMessageDialog(null, "Project, Please");
    
    0 讨论(0)
提交回复
热议问题