2013-04-08 59 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);