JScrollPane边框重叠在JTable边框上

3

我在 JScrollPane 中有一个 JTable,尝试隐藏 JScrollPaneViewPortBorder。为此,我将其边框设置为空边框,但是看起来它在 JTable 外部边框(第一列的左边框)上绘制了空边框。

如何隐藏 JScrollPane 的边框而不隐藏 JTable 的边框?问题仅存在于左侧,右侧的边框不会重叠。

public static void main(String[] args) {
    String[] columnNames = {"First Name",
            "Last Name",
            "Sport",
            "# of Years",
    "Vegetarian"};

    Object[][] data = {
            {"Kathy", "Smith",
                "Snowboarding", new Integer(5), new Boolean(false)},
                {"John", "Doe",
                    "Rowing", new Integer(3), new Boolean(true)},
                    {"Sue", "Black",
                        "Knitting", new Integer(2), new Boolean(false)},
                        {"Jane", "White",
                            "Speed reading", new Integer(20), new Boolean(true)},
                            {"Joe", "Brown",
                                "Pool", new Integer(10), new Boolean(false)}
    };

    JTable table = new JTable(data, columnNames);   
    JScrollPane scroll = new JScrollPane(table);

    Border border = BorderFactory.createEmptyBorder(0, 0, 0, 0);
    scroll.setViewportBorder(border);
    scroll.setBorder(border);

    JPanel panel = new JPanel();
    panel.add(scroll);

    JFrame frame = new JFrame();
    frame.add(panel);
    frame.pack();
    frame.setVisible(true);
}
2个回答

3
没有边框,您所看到的是滚动窗格提供的边框。(无边框/有边框)
这实际上是左侧表格没有网格线的原因之一。
您可以对表格应用。
Color color = table.getGridColor();
table.setBorder(new MatteBorder(0, 1, 0, 0, color));

(无边框 / 带边框)

图片描述


2

当您将JScrollPane边框设置为空边框时,您是正确的。然而,您在表格左侧看到的只是JTable元素绘制的方式。如果您仅添加JTable而不将其放入滚动窗格中,您会发现它以完全相同的方式绘制。

如果您想在表格左侧绘制一条线,则必须手动设置边框。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接