java - 如何使用 JTable/JScrollPane 摆脱边框

标签 java swing jtable jscrollpane

如果您运行下面的小示例,您会看到中心区域周围有一个边框。我不确定为什么会显示此边框。

当 JTable 在 JScrollPane 中时会发生这种情况。我尝试了各种方法来删除它,但到目前为止还没有运气。没有 JScrollPane 的 JTable 不显示边框。

请参阅下面的示例。 TIA。

public class TestScrollPane extends JFrame {

    public static void main(String[] args) {
        JFrame frame = new TestScrollPane();
        JPanel panel = new JPanel();
        JTable table = new JTable();

        panel.setLayout(new BorderLayout());
        panel.add(new JLabel("NORTH"), BorderLayout.NORTH);
        panel.add(new JLabel("SOUTH"), BorderLayout.SOUTH);

        JScrollPane sp = new JScrollPane(table);
        // None of these have any effect
        sp.setBorder(null);
        sp.getInsets().set(0, 0, 0, 0);
        sp.setViewportBorder(null);
        sp.getViewport().setBorder(null);
        sp.getViewport().getInsets().set(0, 0, 0, 0);
        sp.getViewport().setOpaque(true);

        panel.add(sp, BorderLayout.CENTER);
        // Adding the table alone shows no border
        // panel.add(table, BorderLayout.CENTER);
        frame.add(panel);

        frame.setVisible(true);
    }

    public TestScrollPane() throws HeadlessException {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setMinimumSize(new Dimension(100, 100));
    }
}

最佳答案

使用 BorderFactory.createEmptyBorder() 代替 null...

通过使用:

sp.setBorder(createEmptyBorder());

它有效。

你的主要方法变成:

public static void main(String[] args) {
    JFrame frame = new TestScrollPane();
    JPanel panel = new JPanel();
    JTable table = new JTable();

    panel.setLayout(new BorderLayout());
    panel.add(new JLabel("NORTH"), BorderLayout.NORTH);
    panel.add(new JLabel("SOUTH"), BorderLayout.SOUTH);

    JScrollPane sp = new JScrollPane(table);
    sp.setBorder(BorderFactory.createEmptyBorder());
    panel.add(sp, BorderLayout.CENTER);
    frame.add(panel);

    frame.setVisible(true);
}

关于java - 如何使用 JTable/JScrollPane 摆脱边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3333623/

相关文章:

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

Java - 不知道要使用哪种布局?

swing - NetBeans GUI 生成器找不到 SwingX 类

java - ActionListeners 不适用于模态 JDialog

java - JTable 缺少列标题

java - Oracle JDBCPreparedStatement 忽略尾随空格

java - 尝试获取包括使用 AsciiDoc Java 接口(interface)

java - 如何从 .csv 文件向 JTable 中的列添加标题

java - 来自另一个 JFrame 的 JTable 值

java - 为什么我的表单没有在 spring boot 中传递信息