在java中动态更改标题边框颜色

在java中动态更改标题边框颜色,java,swing,jpanel,border,titled-border,Java,Swing,Jpanel,Border,Titled Border,我创建了一个标题边框,并将其设置为JPanel JPanel panel = new JPanel(); panel.setBorder(javax.swing.BorderFactory. createTitledBorder(null, "title", javax.swing.border. TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border. TitledBorder.DEFAULT_POSIT

我创建了一个标题边框,并将其设置为JPanel

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(颜色)更改边框颜色时,我会看到
重新验证()
重新绘制()
;窗体上的面板不受影响。我还创建了thiledBorder的新实例,并将其分配给面板;但是没有效果。是否需要续订面板,然后将其设置为新的边界实例?谢谢

您没有说明如何分配
标题边框
,但这是它的工作方式:

TitledBorder titledBorder = BorderFactory.createTitledBorder(...);
panel.setBorder(titledBorder);
然后在运行时:

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

如果您知道您的面板有标题边框,您可以执行以下操作:

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

您在哪个组件上调用了
revalidate()
repaint()
?我可以建议您将代码调整为一个,以便其他人可以进行实验吗?+1,用于说明revalidate()和repaint()之间的差异。因为组件的大小没有改变,所以可以重新绘制它。