📄 tablemodelexample.java
字号:
package demo.hr;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
/**
* The TableModelExample uses the classical TableModel - what most GUI developers
* use everyday - to model their tables. Over 200 lines more than the TMF using TableModelFreeExample.
* None of this code should look odd to any developer - it's standard TableModel
* code, which now, after reading the TMF, seems far too lengthy and bloated.
* @author MAbernethy
*/
public class TableModelExample implements ActionListener
{
private JTable personalTable;
private JTable financialTable;
private JTable hireTable;
private List candidates;
private List employees;
private HireTableModel hireTableModel;
private PersonalTableModel personalTableModel;
private FinancialTableModel financialTableModel;
public TableModelExample(JTable hireTable, JTable personalTable, JTable financialTable, List listCandidates)
{
this.hireTable = hireTable;
this.personalTable = personalTable;
this.financialTable = financialTable;
this.candidates = listCandidates;
employees = new ArrayList();
hireTableModel = new HireTableModel();
hireTableModel.setData(candidates);
personalTableModel = new PersonalTableModel();
personalTableModel.setData(employees);
financialTableModel = new FinancialTableModel();
financialTableModel.setData(employees);
hireTable.setModel(hireTableModel);
personalTable.setModel(personalTableModel);
financialTable.setModel(financialTableModel);
}
public void actionPerformed(ActionEvent e)
{
JButton b = (JButton)e.getSource();
if (b.getText().equals("Hire"))
{
employees.add(candidates.remove(hireTable.getSelectedRow()));
hireTableModel.fireTableDataChanged();
personalTableModel.fireTableDataChanged();
financialTableModel.fireTableDataChanged();
}
else
{
employees.remove(financialTable.getSelectedRow());
hireTableModel.fireTableDataChanged();
personalTableModel.fireTableDataChanged();
financialTableModel.fireTableDataChanged();
}
}
private class HireTableModel extends AbstractTableModel
{
private List data;
public void setData(List data)
{
this.data = data;
}
public String getColumName(int col)
{
if (col == 0)
return "First Name";
else
return "Last Name";
}
public Class getColumnClass(int col)
{
return String.class;
}
public int getRowCount()
{
return data.size();
}
public int getColumnCount()
{
return 2;
}
public Object getValueAt(int row, int col)
{
if (col == 0)
return ((EmployeeVO)(data.get(row))).getFirstName();
else
return ((EmployeeVO)(data.get(row))).getLastName();
}
public void setValueAt(Object o, int row, int col)
{
if (col == 0)
((EmployeeVO)(data.get(row))).setFirstName((String)o);
else
((EmployeeVO)(data.get(row))).setLastName((String)o);
}
}
private class PersonalTableModel extends AbstractTableModel
{
private List data;
public void setData(List data)
{
this.data = data;
}
public String getColumName(int col)
{
if (col == 0)
return "First Name";
else if (col == 1)
return "Last Name";
else if (col == 2)
return "Street Address";
else if (col == 3)
return "State";
else if (col == 4)
return "Zip";
else
return "Married";
}
public Class getColumnClass(int col)
{
if (col == 0 || col == 1 || col == 2 || col == 3)
return String.class;
else if (col == 4)
return Integer.class;
else
return Boolean.class;
}
public int getRowCount()
{
return data.size();
}
public int getColumnCount()
{
return 6;
}
public Object getValueAt(int row, int col)
{
if (col == 0)
return ((EmployeeVO)(data.get(row))).getFirstName();
else if (col == 1)
return ((EmployeeVO)(data.get(row))).getLastName();
else if (col == 2)
return ((EmployeeVO)(data.get(row))).getAddress();
else if (col == 3)
return ((EmployeeVO)(data.get(row))).getState();
else if (col == 4)
return new Integer(((EmployeeVO)(data.get(row))).getZipCode());
else
return new Boolean(((EmployeeVO)(data.get(row))).isMarried());
}
public void setValueAt(Object o, int row, int col)
{
if (col == 0)
((EmployeeVO)(data.get(row))).setFirstName((String)o);
else if (col == 1)
((EmployeeVO)(data.get(row))).setLastName((String)o);
else if (col == 2)
((EmployeeVO)(data.get(row))).setAddress((String)o);
else if (col == 3)
((EmployeeVO)(data.get(row))).setState((String)o);
else if (col == 4)
{
int val = ((Integer)o).intValue();
((EmployeeVO)(data.get(row))).setZipCode(val);
}
else
((EmployeeVO)(data.get(row))).setMarried(((Boolean)o).booleanValue());
}
}
private class FinancialTableModel extends AbstractTableModel
{
private List data;
public void setData(List data)
{
this.data = data;
}
public String getColumName(int col)
{
if (col == 0)
return "First Name";
else if (col == 1)
return "Last Name";
else if (col == 2)
return "Band Level";
else if (col == 3)
return "Years of Service";
else
return "Salary";
}
public Class getColumnClass(int col)
{
if (col == 0 || col == 1)
return String.class;
else if (col == 2)
return Integer.class;
else
return java.math.BigDecimal.class;
}
public int getRowCount()
{
return data.size();
}
public int getColumnCount()
{
return 5;
}
public Object getValueAt(int row, int col)
{
if (col == 0)
return ((EmployeeVO)(data.get(row))).getFirstName();
else if (col == 1)
return ((EmployeeVO)(data.get(row))).getLastName();
else if (col == 2)
return new Integer(((EmployeeVO)(data.get(row))).getBandLevel());
else if (col == 3)
return new Integer(((EmployeeVO)(data.get(row))).getYearsService());
else
return ((EmployeeVO)(data.get(row))).getSalary();
}
public void setValueAt(Object o, int row, int col)
{
if (col == 0)
((EmployeeVO)(data.get(row))).setFirstName((String)o);
else if (col == 1)
((EmployeeVO)(data.get(row))).setLastName((String)o);
else if (col == 2)
{
int i = ((Integer)o).intValue();
((EmployeeVO)(data.get(row))).setBandLevel(i);
}
else if (col == 3)
{
int i = ((Integer)o).intValue();
((EmployeeVO)(data.get(row))).setYearsService(i);
}
else
((EmployeeVO)(data.get(row))).setSalary((java.math.BigDecimal)o);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -