如何在JScrollPane上删除3D边框

时间:2018-12-30 22:41:57

标签: java swing jtable border jscrollpane

我有一个JTable和一个JScrollPane,可以确保有一个滚动条,以防它变大。一切都很好,这是它的屏幕截图:

Screenshot

您现在无法看到滚动条,因为它不是必需的,但这不是问题。问题出在JTable和更低的位置(显示JScrollPane的大小)周围,您可以看到这样的边框,使其看起来像带有阴影等的3D。我希望删除它。我似乎找不到任何禁用此属性的属性,并且JTableJScrollPane都没有任何类型的边框(也没有默认边框)。关于如何删除此3D边框的任何想法?

4 个答案:

答案 0 :(得分:0)

很难说,因为您没有显示任何代码,但是在 JScrollPane (不是JTable)上调用时,getBorder()和getViewportBorder()都返回null。

您正在使用哪个LnF(外观和感觉)?

答案 1 :(得分:0)

   jScrollPane.setBorder(new EmptyBorder(1, 1, 1, 1));
   jTable.setBorder(new EmptyBorder(1, 1, 1, 1));

使用与“ jScrollPane”和“ jTable”相关的自己的变量名。最好使用Windows Look and Feel以获得良好的外观。

答案 2 :(得分:0)

我发现3D边框实际上是由默认外观生成的。通过更改此设置,我可以删除边框。

答案 3 :(得分:0)

在LookAndFeel初始化中,只需设置空边框即可:

UIManager.getDefaults().put("ScrollPane.border", BorderFactory.createEmptyBorder());
UIManager.getDefaults().put("Table.border", BorderFactory.createEmptyBorder());

它将影响您应用中的所有 ScrollPane对象,如果您只想更改一个,请使用以下代码:

jScrollPane.setBorder(BorderFactory.createEmptyBorder());
jTable.setBorder(BorderFactory.createEmptyBorder());

如果要保存标题的顶部边框,请使用 MatteBorder

BorderFactory.createMatteBorder(1, 0, 0, 0,Color.LIGHT_GRAY))//1 is top line, rest is empty