如何去除 JScrollPane 上的 3D 边框

How to remove 3D border on JScrollPane

我有一个 JTable 和一个 JScrollPane 确保有一个滚动条以防它变得太大。一切正常,这是它的屏幕截图:

您现在看不到滚动条,因为没有必要,但这不是问题所在。问题出在 JTable 附近(显示 JScrollPane 的大小),您可以看到一个边框,使它看起来像带有阴影等的 3D。我想删除它。我似乎找不到任何禁用此功能的 属性,并且 JTableJScrollPane 都没有任何类型的边框(也没有默认值)。关于如何删除此 3D 边框有什么想法吗?

很难说,因为您没有显示任何代码,但是在 JScrollPane(不是 JTable ).

您使用的是哪种 LnF(外观)?

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

使用您自己的与 "jScrollPane" 和 "jTable" 相关的变量名称。最好使用 Windows Look and Feel 来更好看。

我发现这个3D边框其实是Default look and feel生成的。通过更改此设置,我能够删除边框。

在 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