表格模型

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 TableModelForArray implements TableModel{ private Personal[] data; public TableModelForArray(Personal[] data){ this.data=data; } public String getColName(int index) { switch(index){ case 0:return "name"; case 1:return "sex"; case 2:return "birthday"; case 3:return "work"; case 4:return "certificate"; case 5:return "plance"; case 6:return "salary"; case 7:return "status"; case 8:return "mobile"; } return null; } public int getColNumber() { return Personal.class.getDeclaredFields().length; } public int getRowNumber() { return data.length; } public Object getValue(int r, int c) { switch(c){ case 0:return data[r].getName(); case 1:return data[r].getSex(); case 2:return data[r].getBirthday(); case 3:return data[r].getWork(); case 4:return data[r].getCertificate(); case 5:return data[r].getPlance(); case 6:return data[r].getSalary(); case 7:return data[r].getStatus(); case 8:return data[r].getMobile(); } return null; } }

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; } }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值