1 import java.awt.BorderLayout; 2 import java.awt.EventQueue; 3 import java.awt.Panel; 4 import java.util.ArrayList; 5 import java.util.List; 6 7 import javax.swing.JFrame; 8 import javax.swing.JPanel; 9 import javax.swing.JScrollPane; 10 import javax.swing.JTable; 11 import javax.swing.border.EmptyBorder; 12 import javax.swing.event.TableModelEvent; 13 import javax.swing.event.TableModelListener; 14 import javax.swing.plaf.basic.BasicTabbedPaneUI.TabbedPaneLayout; 15 import javax.swing.table.TableModel; 16 17 public class test extends JFrame { 18 19 private JPanel contentPane; 20 21 /** 22 * Launch the application. 23 */ 24 public static void main(String[] args) { 25 EventQueue.invokeLater(new Runnable() { 26 public void run() { 27 try { 28 test frame = new test(); 29 frame.setVisible(true); 30 } catch (Exception e) { 31 e.printStackTrace(); 32 } 33 } 34 }); 35 } 36 37 /** 38 * Create the frame. 39 */ 40 public test() { 41 List<Person> list = new ArrayList<>(); 42 list.add(new Person("1", "11", "111")); 43 list.add(new Person("2", "22", "222")); 44 list.add(new Person("3", "33", "333")); 45 Model model = new Model(); 46 Panel parent = new Panel(); 47 JTable table = new JTable(); 48 table.setModel(model);// 为table 分配model 49 JScrollPane jPane = new JScrollPane(table);// 将table放进滚动条 放进滚动条后可显示列名 50 // getContentPane()得到JFrame最底层的JPanel 默认拥有一个不可直接向JFrame添加 需向JPanel添加 51 getContentPane().add(jPane); 52 table.setVisible(true); 53 54 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 55 setBounds(100, 100, 450, 300); 56 57 } 58 59 } 60 61 class Model implements TableModel { 62 List<Person> List; 63 Object[][] p = { { "11", "Taipei" }, { "22", "ChiaYi", }, { "33", "ChiaYi", }, { "44", "ChiaYi", } }; // 表格数据 64 String n[] = { "AA", "BB" }; // 属性名 65 66 @Override 67 public Class<?> getColumnClass(int columnIndex) { 68 return Object.class; 69 } 70 71 /* 72 * 为表格传入列数 73 * 74 * @see javax.swing.table.TableModel#getColumnCount() 75 */ 76 @Override 77 public int getColumnCount() { 78 79 return n.length; 80 } 81 82 /* 83 * 为表格传入属性名 84 * 85 * @see javax.swing.table.TableModel#getColumnName(int) 86 */ 87 @Override 88 public String getColumnName(int columnIndex) { 89 return n[columnIndex]; 90 } 91 92 /* 93 * 为表格传入行数 94 * 95 * @see javax.swing.table.TableModel#getRowCount() 96 */ 97 @Override 98 public int getRowCount() { 99 return p.length; 100 } 101 102 /* 103 * 将数组中的数据传入表格 104 * 105 * @see javax.swing.table.TableModel#getValueAt(int, int) 106 */ 107 @Override 108 public Object getValueAt(int rowIndex, int columnIndex) { 109 110 return p[rowIndex][columnIndex]; 111 } 112 113 /* 114 * 设置表格是否可编辑 115 * 116 * @see javax.swing.table.TableModel#isCellEditable(int, int) 117 */ 118 @Override 119 public boolean isCellEditable(int rowIndex, int columnIndex) { 120 return true; 121 } 122 123 /* 124 * 每当数据模型发生更改时,就将一个侦听器添加到被通知的列表中。 125 * 126 * @see 127 * javax.swing.table.TableModel#addTableModelListener(javax.swing.event. 128 * TableModelListener) 129 */ 130 @Override 131 public void addTableModelListener(TableModelListener l) { 132 133 } 134 135 /* 136 * 每当数据模型发生更改时,就从被通知的列表中移除一个侦听器。 137 * 138 * @see 139 * javax.swing.table.TableModel#removeTableModelListener(javax.swing.event. 140 * TableModelListener) 141 */ 142 @Override 143 public void removeTableModelListener(TableModelListener l) { 144 145 } 146 147 /* 148 * 将表格中的值设定为 149 * 150 * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int) 151 */ 152 @Override 153 public void setValueAt(Object aValue, int rowIndex, int columnIndex) { 154 p[rowIndex][columnIndex] = aValue; 155 156 } 157 158 }
时间: 2024-11-10 01:07:29