0
private JDialog dialog;
private JTextArea text;
private JPanel buttons, filler;
private JRadioButton questions, list;
private ButtonGroup group;
private JButton confirm;

dialog = new JDialog(Main.masterWindow, lang.getString("newTitle"), true);
dialog.getContentPane().setLayout(new BoxLayout(dialog.getContentPane(), BoxLayout.Y_AXIS));
dialog.setResizable(false);

text = new JTextArea();

//this works
text.setBackground(Color.RED);

//this both don't
text.setBackground((Color)UIManager.get("control");
text.setBackground(dialog.getContentPane().getBackground());

dialog.setVisible(true);

我正在使用 Nimbus L&F,“控制”是我的对话框的背景颜色。如果我设置任何其他颜色(在此示例中为红色),它会显示,但如果我将其设置为这个颜色,它会保持白色。

我在默认(金属)L&F 上没有问题...

有什么问题?

4

2 回答 2

1

尝试运行以下代码:

    System.out.println((Color)UIManager.get("control"));

这将打印出您从 UIManager 获得的确切颜色。也许它实际上应该是白色的。告诉我打印的是什么

编辑:

//this both don't
//text.setBackground(dialog.getContentPane.getBackground());

好吧,首先,即使 getContentPane 是一种方法,您也没有 () 。尝试这样做:text.setBackground(dialog.getContentPane().getBackground());

于 2012-09-15T16:12:28.590 回答
1

出于某种原因,它似乎不喜欢从调用ColorUIResource返回的对象。UIManager.get我不明白为什么,因为它来自Color.

如果你做类似的事情

JDialog dialog = new JDialog((JFrame) null, "Help", true);
dialog.getContentPane().setLayout(new BoxLayout(dialog.getContentPane(), BoxLayout.Y_AXIS));

JTextArea text = new JTextArea(10, 10);

Color color = new Color(UIManager.getColor("control").getRGB()); // <-- Create a new color

text.setBackground(bg);

dialog.add(text);
dialog.pack();
dialog.setLocationRelativeTo(null);
dialog.setVisible(true);

这似乎有效。

如果你必须这样做。我不这么认为,但我尝试过的所有其他方法都不起作用

于 2012-09-17T02:03:30.033 回答