所以我有一个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();
感谢任何建议
答案 0 :(得分:1)
您的问题可能是由于将滚动窗格的大小设置为0.在使用table.setPreferredScrollableViewportSize(table.getPreferredSize())
之前,您应该删除table.setPreferredSize()
或设置表格的首选大小table.getPreferredSize()
}。
答案 1 :(得分:1)
作为调用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
界面的详情。