【问题标题】:How to Create a JTable with column headers only, no rows added如何创建仅包含列标题的 JTable,不添加行
【发布时间】:2018-06-02 15:19:29
【问题描述】:

我正在尝试创建一个没有任何数据行的 JTable,只添加了列标题。怎么做?这个想法是稍后通过按钮单击事件添加或删除行。

【问题讨论】:

    标签: java swing jtable


    【解决方案1】:

    很简单,使用构造函数new JTable(Vector rowData, Vector columnNames) 创建一个JTable,其中rowData 是新表的数据,columnNames 是每一列的名称。如果您只想创建一个没有行的表,请将Vector rows 设为空。

    Vector rows = new Vector();
    Vector headers = new Vector();
    headers.addElement("Id");
    headers.addElement("First name");
    headers.addElement("Last name");
    
    JTable table = new JTable(rows, headers);
    

    【讨论】:

    • 我试过这个东西。我得到的是一个空白的白色矩形没有标题,什么都没有。没有任何提示是一张桌子。我想,我错过了一些东西......
    【解决方案2】:

    有很多方法可以创建和定义 JTable。做你想做的事,使用 TableModel 方法。您可以定义一个空模型并稍后用数据填充它。有关示例,请参阅Creating a JTable

    这是一个空表模型的简单演示。

    import java.awt.BorderLayout;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableColumnModel;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableColumn;
    import javax.swing.table.TableColumnModel;
    import javax.swing.table.TableModel;
    
    public class JTableDemo {
    
        public static void main(String args[]) {
    
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            TableModel model = new DefaultTableModel();
    
            Object headers[] = { "Column One", "Column Two", "Column Three"};
    
            TableColumnModel columnModel = new DefaultTableColumnModel();
            TableColumn firstColumn = new TableColumn(1);
            firstColumn.setHeaderValue(headers[0]);
            columnModel.addColumn(firstColumn);
    
            TableColumn secondColumn = new TableColumn(0);
            secondColumn.setHeaderValue(headers[1]);
            columnModel.addColumn(secondColumn);
    
            TableColumn thirdColumn = new TableColumn(0);
            thirdColumn.setHeaderValue(headers[2]);
            columnModel.addColumn(thirdColumn);
    
            JTable table = new JTable(model, columnModel);
    
            JScrollPane scrollPane = new JScrollPane(table);
            frame.add(scrollPane, BorderLayout.CENTER);
            frame.setSize(300, 150);
            frame.setVisible(true);
    
        }
    }
    

    【讨论】:

    • 感谢您的回复。我已经有了一个解决方案。我也试试这个
    猜你喜欢
    • 1970-01-01
    • 2020-08-29
    • 2015-03-23
    • 2018-03-13
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多