java - JTable左上线不可见

标签 java swing jtable jscrollpane

我试图在 JTables 上显示一些数据:

private JTable table1 = new JTable() {
    
    
    private static final long serialVersionUID = 1L;
    
    @Override
    public boolean isCellEditable(int row, int column) {
        return false;
    }

};

private JScrollPane secTabFirst() {

    Object [][] data = {{"90"},{"1700"},{"60"},{"0.7"}, {"Globular"}, {"Sinusoidal"}};
    
    String[] columnNames = {"Parameters"};
    
    DefaultTableModel model = new DefaultTableModel(data, columnNames);
    
    table1.setModel(model);
    
    table1.setTableHeader(null);
    table1.setShowHorizontalLines(true);
    table1.setShowVerticalLines(true);
    //table1.setPreferredSize(new Dimension(150,240));
    //table1.setMaximumSize(new Dimension(150,240));
    
    
    JScrollPane tb1 = new JScrollPane(table1);
    
    tb1.setVisible(true);
    
    return tb1;
}

public static void main(String args[]){
 
 JPanel panel = new JPanel();

 panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

 panel.add(secTabFirst());

}  

JTables 显示如下:
The JTables are shown like these

但是表格的上行和左行是不可见的。此外,将表格放入 JScrollPane 后,它会显示 2 个黑框。

如何使线条可见且黑框消失?

谢谢

MB

最佳答案

我尝试复制您的问题,但没有成功,JTable 默认情况下永远不会显示顶部和左侧边框,但这不是问题,因为它通常预期在 内呈现>JScrollPane。正如 @HovercraftFullOfEels 提到的,尝试给我们一个 Short, Self Contained, Correct (Compilable), Example

enter image description here

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;

public class TestApp {

    public TestApp() {
        initComponents();
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(TestApp::new);
    }

    private void initComponents() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        panel.setBorder(new EmptyBorder(10, 10, 10, 10));

        JTable table = new JTable() {
            private static final long serialVersionUID = 1L;

            @Override
            public boolean isCellEditable(int row, int column) {
                return false;
            }
        };

        Object[][] data = {{"90"}, {"1700"}, {"60"}, {"0.7"}, {"Globular"}, {"Sinusoidal"}};
        String[] columnNames = {"Parameters"};
        DefaultTableModel model = new DefaultTableModel(data, columnNames);
        table.setModel(model);
        table.setTableHeader(null);

        JScrollPane pane = new JScrollPane(table); // borders for top and left will be rendered thanks to JScrollPanes borders
        panel.add(pane);

        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
    }

}

更新:

但是,您可以自己设置Border,这将确保绘制顶部和左侧边框线:

table.setBorder(new LineBorder(Color.GRAY, 1));

这会产生(在下面的屏幕截图中,JTable 不在 JScrollPane 中,以显示边框而不受干扰):

enter image description here

关于java - JTable左上线不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65125060/

相关文章:

java - 线程 "main"java.lang.Error : unresolved variable 中出现异常

Java : Google AppEngine : OAuth : Google Drive API to access user's Google Drive contents created by Web Application

java - JOptionPane.showInputDialog显示两次,为什么?

java - 如何创建自定义 JTable?

java - 如何向 JScrollPane 添加水平/垂直滚动条

java - Q : Android - How to start one activity from another without button click

java - 缩放和缩放

java - 如何在 JFrame 中显示 JButton 和 JLabels?

java - 如何在 JTable 中动态设置 RowHeight

java - Maven 存储库位置未在 Eclipse 中更新