2012-09-15 113 views
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,而「control」是我的對話框的背景顏色。如果我設置了其他顏色(在這個例子中是紅色),它會顯示,但如果我將它設置爲這個顏色,它會保持白色。JTextArea背景問題

我沒有缺省(金屬)長&˚FTIS問題...

什麼問題?

回答

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

這似乎是工作。

如果你必須這樣做。我不這麼認爲,但我嘗試過的其他東西都沒有工作

+0

nimbus不能這樣工作:-) – mKorbel

1

嘗試運行以下代碼:

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

這將打印出來正是你所來自UIManager得到什麼顏色。也許它實際上應該是白色的。看官,打印

編輯:

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

好第一關,你沒有()的getContentPane後,即使它是一種方法。嘗試這樣做:text.setBackground(dialog.getContentPane().getBackground());

+0

'javax.swing.plaf.ColorUIResource [r = 214,g = 217,b = 223]' –

+0

好的,我已經修復了它用這些RGB valuse創建新的顏色,但我不明白爲什麼我無法從對話框背景中獲取顏色? 在這種情況下沒問題,但是我的對話框背景不同,並且我希望JTextArea跟上,如果我不能直接訪問顏色的話。 –

+0

@IvanKarlovic請參閱編輯 –