【问题标题】:change TitledBorder color dynamically in java在java中动态改变TitledBorder颜色
【发布时间】:2013-03-30 13:00:09
【问题描述】:

我创建了一个 TitledBorder 并将其设置为 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(theColor);revalidate()repaint() 方法更改边框颜色时;表单上的面板不受影响。我还创建了thiledBorder 的新实例并将其分配给面板;但没有效果。是否需要更新面板,然后将其设置为新的边框实例?谢谢你

【问题讨论】:

  • 您在哪个组件上调用了revalidate()repaint()?我可以建议您将您的代码调整为 SSCCE 以便其他人可以尝试吗?

标签: java swing jpanel border titled-border


【解决方案1】:

您没有说明titledborder 是如何分配的,但这就是它的工作方式:

TitledBorder titledBorder = BorderFactory.createTitledBorder(...);
panel.setBorder(titledBorder);

然后在运行时:

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

【讨论】:

  • +1,用于注意 revalidate() 和 repaint() 之间的区别。由于组件的大小没有改变,你可以 repaint() 它。
【解决方案2】:

如果您知道您的面板有标题边框,您可以这样做:

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

【讨论】:

    猜你喜欢
    • 2016-04-20
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 2012-10-17
    • 2023-03-21
    相关资源
    最近更新 更多