Java 如何删除JScrollPane上的三维边框

Java 如何删除JScrollPane上的三维边框,java,swing,jtable,border,jscrollpane,Java,Swing,Jtable,Border,Jscrollpane,我有一个JTable和一个JScrollPane,确保有一个滚动条,以防它变得太大。这一切都非常好,下面是它的屏幕截图: 您现在无法看到滚动条,因为它不是必需的,但这不是问题所在。问题出在JTable和更低的位置(显示JScrollPane的大小),您可以看到一个边框,它看起来像是带阴影的3D。我想删除这个。我似乎找不到任何禁用此功能的属性,JTable和JScrollPane都没有任何类型的边框(也没有默认值)。关于如何删除这个3D边框有什么想法吗?很难说,因为您没有显示任何代码,但是在JS

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


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

很难说,因为您没有显示任何代码,但是在JScrollPane上调用getBorder()和getViewportBorder()时是否都返回null(不是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边框实际上是由默认的外观生成的。通过更改此选项,我可以删除边框。

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

UIManager.getDefaults().put("ScrollPane.border", BorderFactory.createEmptyBorder());
UIManager.getDefaults().put("Table.border", BorderFactory.createEmptyBorder());
它将影响应用程序周围的所有滚动窗格对象,如果您不想只更改一个,请使用以下代码:

jScrollPane.setBorder(BorderFactory.createEmptyBorder());
jTable.setBorder(BorderFactory.createEmptyBorder());
如果要为页眉保存顶行边框,请使用MatteBorder:


setboorder
对你不起作用吗?@JoeC我已经提到了如何设置边界。已存在的代码为
table.setboorder(空)
没有(甚至不是默认的)边框。您是否尝试过设置
清空顺序
BorderFactory.createMatteBorder(1, 0, 0, 0,Color.LIGHT_GRAY))//1 is top line, rest is empty