2013-04-08 79 views
1

我創建的TitledBorder並將其設置爲一個JPanel。變化的TitledBorder彩色動態java中

JPanel panel = new JPanel(); 
panel.setBorder(javax.swing.BorderFactory. 
     createTitledBorder(null, "title", javax.swing.border. 
     TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border. 
     TitledBorder.DEFAULT_POSITION, null, java.awt.Color.red)); 

現在我想改變邊框的標題文本的顏色;如果可能的話還有邊界線。我看到當我改變由該方法titledborder.setTitleColor(theColor);revalidate()repaint()邊框的顏色;窗體上的面板不受影響。我也創造了thiledBorder新實例,並將其分配給面板;但沒有效果。是否需要更新面板,然後將其設置爲新邊框實例?謝謝

+0

你調用了'revalidate()'和'repaint()'哪個組件?我可以建議你調整你的代碼爲[SSCCE(http://sscce.org/),以便其他人可以嘗試? – 2013-04-08 12:49:50

回答

5

你沒有說明如何titledborder分配,但是這是它如何工作:

在運行時
TitledBorder titledBorder = BorderFactory.createTitledBorder(...); 
panel.setBorder(titledBorder); 

則:

titledBorder.setTitleColor(theColor); 
repaint(); // revalidate not necessry 
+1

1,用於指出重新驗證之間的差值(),並重繪()。由於組件的大小沒有改變,你可以重繪()它。 – camickr 2013-04-08 15:25:32

0

如果你知道你的面板上有一個標題邊框你可以這樣做:

TitledBorder titledBorder = (TitledBorder)jPanel1.getBorder(); 
    titledBorder.setTitleColor(Color.red);