0

我对 Java Swing 和 LAF 有疑问。我正在使用 JGoodies,并尝试增加焦点区域边框的厚度。我通过 UIDefault 尝试过,但没有这样的选项。边框的例子你能告诉我如何设置边框吗?

我看到了这篇文章:Change the color of the Java Swing Component Focus indicator but没有解决我的问题。

例子

4

1 回答 1

0

这种风格取决于L&F,是否支持Table.border礼节或Table.scrollPaneBorder.

在某些情况下,此属性Table.scrollPaneBorder就足够了,但没有规则可以将表格包裹在滚动窗格包裹表格中。换句话说,您可以拥有一个没有滚动面板的表格。

如果你有一个没有滚动面板的表格,问题可以从 LookAndFeel 解决,如果你的实际 L&f 没有这个支持,解决方案是多种的,例如:

  • 使用另一个 l&f。如Material-ui-swing,table.border 在开发分支下,可以编译源码。
  • 开发个人TableUI 设置点一等UI里面的边框
  • 您可以将表格包装在滚动窗格中,但它应该遵守 L&f 规则。

1. 实现表格 UI。(来自material-ui-swing

在 property 中插入一个 Border Table.border,例如:

UiManager.put("Table.border", new BorderUIResources(YOUR_BORDER));

您需要将边框包裹在 BorderUIResource 中,因为如果您在 APP 中实现了开关 L6f,则 Swing 不会在没有 UIResource 接口的情况下删除该属性。

public class MaterialTableUI extends BasicTableUI {


    public static ComponentUI createUI (JComponent c) {
        return new MaterialTableUI();
    }

    @Override
    public void installUI (JComponent c) {
        super.installUI (c);
        table.setBorder(UIManager.getBorder("Table.border"));
    }
}

如果表格从滚动窗格中展开,则此答案概述了存在的所有可能解决方案。其实礼节Table.scrollPaneBorder应该做的很好

Material-ui-swing 示例

设置边框

UIManager.put("Table.border", BorderFactory.createLineBorder(MaterialColors.COSMO_BLACK, 5));

在此处输入图像描述

于 2020-08-16T10:30:35.087 回答