package tables;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ContainerListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.util.Date;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Table extends JFrame {
private TableModel model;
private JFrame frame = new JFrame("表格模型");
private JTextArea area = new JTextArea(20, 80);
private JScrollPane pane = new JScrollPane(area);
private JRadioButton[] button = new JRadioButton[2];
private ButtonGroup group = new ButtonGroup();
private JPanel panel = new JPanel();
public Table(String title, final Personal[] personals,
final String[][] strings) {
super(title);
button[0] = new JRadioButton("一维");
button[1] = new JRadioButton("二维");
for (int i = 0; i < button.length; i++) {
group.add(button[i]);
panel.add(button[i]);
button[i].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if ("一维" == e.getActionCommand()) {
setModel(new TableModelForArray(personals));
}
if ("二维" == e.getActionCommand()) {
setModel(new TableModelForArray2D(strings));
}
}
});
button[i].addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
area.setText("");
}
});
}
add(panel, BorderLayout.NORTH);
area.setLineWrap(true);
add(pane);
pack();
setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
setVisible(true);
}
public void setModel(TableModel model) {
this.model = model;
this.printTable();
}
public void printTable() {
if (area.getText() != null) {
area.setText("");
}
for (int i = 0; i < model.getColNumber(); i++) {
area.append(model.getColName(i) + "\t");
}
area.append("\n");
for (int i = 0; i < model.getRowNumber(); i++) {
for (int j = 0; j < model.getColNumber(); j++) {
area.append(model.getValue(i, j) + "\t");
}
area.append("\n");
}
}
public static void main(String[] args) {
Personal[] personals = { new Personal("吕布", '男', new Date(), 10, "身份证",
"上海", 5000.0, "在职", 1234567890) };
String[][] strings = {
{ "name", "sex", "birthday", "work", "certificate", "plance",
"salary", "status", "mobile" },
{ "吕布", "男", new Date().toString(), "10", "身份证", "上海",
"5000.0", "在职", "1234567890"
} };
new Table("表格模型", personals, strings);
}
}
package tables; public interface TableModel { int getRowNumber(); int getColNumber(); String getColName(int index); Object getValue(int r, int c); }
package tables; public class TableModelForArray2D implements TableModel{ private String[][] data; public TableModelForArray2D(String[][] data){ this.data=data; } public String getColName(int index) { return data[0][index]; } public int getColNumber() { return data[0].length; } public int getRowNumber() { return data.length-1; } public Object getValue(int r, int c) { return data[r+1][c]; } }
package tables; import java.util.Date; public class Personal { private String name; private char sex; private Date birthday; private int work; private String certificate; private String plance; private double salary; private String status; private long mobile; public Personal(String name, char sex, Date birthday, int work, String certificate, String plance, double salary, String status, long mobile) { this.name = name; this.sex = sex; this.birthday = birthday; this.work = work; this.certificate = certificate; this.plance = plance; this.salary = salary; this.status = status; this.mobile = mobile; } public String getName() { return name; } public char getSex() { return sex; } public Date getBirthday() { return birthday; } public int getWork() { return work; } public String getCertificate() { return certificate; } public String getPlance() { return plance; } public double getSalary() { return salary; } public String getStatus() { return status; } public long getMobile() { return mobile; } public void setBirthday(Date birthday) { this.birthday = birthday; } }