【问题标题】:JTable won't dynamically add rowsJTable 不会动态添加行
【发布时间】:2016-04-23 17:29:50
【问题描述】:

所以我有一个 jtable,它应该将 Jtextfields 中的字段添加到表中,该表根据需要存在于窗格中(出现列名并且没有行)但是当我单击添加新行时而是添加一个空白列(并且仅一次)

创建我的表的方法

public void createTable(){
    model.setColumnIdentifiers(columns);
    JTable table = new JTable(model);       
    JScrollPane scrollPane = new JScrollPane(table);
    table.setPreferredScrollableViewportSize(table.getPreferredSize());
    tablepanel.add(scrollPane, BorderLayout.SOUTH);

}

还有我用来添加数据的按钮

class AddHandler implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            if(e.getSource()==btnUpload)
            {

                String nameRow = txtName.getText();
                String surnameRow = txtSurname.getText();
                String phoneRow = txtPhone.getText();
                String addressRow = txtAddress.getText();
                String postcodeRow = txtPostcode.getText();
                String emailRow = txtEmail.getText();
                Object[] row = {nameRow,surnameRow,phoneRow,addressRow,postcodeRow,emailRow};
                model.addRow(row);

            }

        }
    }

我将默认模型设置为这样的全局变量:

private DefaultTableModel model = new DefaultTableModel();

欢迎提出任何建议

【问题讨论】:

  • Any suggestions are appreciated - 创建一个 SSCCE 来演示问题。因此,您创建了一个带有 JTable 和“添加行”按钮的框架。添加行按钮将简单地将一行硬编码数据添加到表中。然后,一旦您开始工作,您就可以从框架上的文本字段中动态获取数据。如果您对 SSCCE 有疑问,那么您有我们可以编译和测试的代码来看看您在做什么。

标签: java swing jtable


【解决方案1】:

您的问题可能是由于将滚动窗格的大小设置为 0。在使用 table.getPreferredSize() 之前,您应该删除 table.setPreferredScrollableViewportSize(table.getPreferredSize()) 或将表格的首选大小设置为 table.setPreferredSize()

【讨论】:

  • 谢谢,非常简单的解决方案让我无法理解!
【解决方案2】:

作为调用setPreferredScrollableViewportSize() 的替代方法,考虑覆盖表的getPreferredScrollableViewportSize() 实现并使高度成为getRowHeight() 的倍数;一个完整的例子显示在here

JTable table = new JTable(tableModel) {

    @Override
    public Dimension getPreferredScrollableViewportSize() {
        return new Dimension(200, table.getRowHeight() * N);
    }
};

您可以在Implementing a Scrolling-Savvy Client 中了解有关Scrollable 接口的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    相关资源
    最近更新 更多