【发布时间】:2017-08-23 16:46:38
【问题描述】:
我正在尝试创建一个 JTable,它根据来自 ArrayList 的信息创建表。 ArrayList 填充了用户在 GUI 中输入的信息。每次用户按下 JButton 时,它都应该向表中添加新的数据行。
在谷歌上搜索后,似乎最好的方法是创建一个自定义表格模型。我找不到关于如何做到这一点的体面教程。我查看了官方文档,以及一些随机站点和其他帖子。希望你们中的一个人能指出我正确的方向。
这是我当前 GUI 的图片。 JTable 应该填充中心区域:
这是我的一些代码:
class dataModel extends AbstractTableModel
{
private String[] columnName = {"Emp Num", "Base Pay", "Hours Worked", "Pay Amt"};
public int getColumnCount()
{
return 4;
}
public int getRowCount()
{
return empData.size();
}
public Object getValueAt(int row, int col)
{
return new Integer(row*col);
}
}
按钮单击时发生的类。
class listener implements ActionListener
{
@SuppressWarnings("unchecked")
public void actionPerformed(ActionEvent e)
{
ArrayList empData = new ArrayList();
int empNum = 0;
double hourlyRate = 0;
double hoursWorked = 0;
try
{
empNum = Integer.parseInt(empNumField.getText());
}
catch(NumberFormatException event)
{
JOptionPane.showMessageDialog(null, "Invalid entry.\n\nPlease enter a number for the Employee ID.", "Error", JOptionPane.WARNING_MESSAGE);
return;
}
try
{
hourlyRate = Double.parseDouble(basePayField.getText());
}
catch(NumberFormatException event)
{
JOptionPane.showMessageDialog(null, "Invalid entry.\n\nPlease enter a number for the Hourly Pay Rate.", "Error", JOptionPane.WARNING_MESSAGE);
return;
}
try
{
hoursWorked = Double.parseDouble(hrsField.getText());
}
catch(NumberFormatException event)
{
JOptionPane.showMessageDialog(null, "Invalid entry.\n\nPlease enter a number for the Hours Worked.", "Error", JOptionPane.WARNING_MESSAGE);
return;
}
double payAMT = calculatePay(hourlyRate, hoursWorked);
empData.add(empNum);
empData.add(hourlyRate);
empData.add(hoursWorked);
empData.add(payAMT);
}
【问题讨论】:
-
This answers 演示了一个由
List支持的自定义TableModel,它甚至可以添加/删除删除 -
根据现有信息,
DefaultTableModel会做你想做的事 -
这个example 说明了一个
TableModel有一个Map<String, String>。
标签: java swing arraylist jtable