java swingä¸å¨jTableä¸æ·»å å¤ä¸ªå¤éæ¡çæ¹å¼å¦ä¸ï¼
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.table.*;
public class MyFirstJFrame extends JFrame {
// ä½ä¸ºæµè¯çmainæ¹æ³
public static void main(String[] args) {
new MyFirstJFrame().setVisible(true);
}
/**
* æé æ¹æ³
*/
public MyFirstJFrame() {
InitialComponent();
}
/**
* åå§åç»ä»¶çæ¹æ³
*/
private void InitialComponent(){
// 设置çªä½åæ°
// 设置å¸å±æ¨¡å¼
setLayout(null);
// 设置çªä½å¤§å°
setSize(480, 360);
// 设置çªä½å±
ä¸ï¼é常è§æ¹æ³ï¼
setLocationRelativeTo(null);
// å
³éçªä½éåºç¨åº
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
// åå§åé¢æ¿
panel = new JPanel();
panel.setSize(this.getWidth(), this.getHeight());
panel.setLocation(0,0);
panel.setLayout(null);
// åå§åè¡¨æ ¼
table = new JTable(new DefaultTableModel(new Object[][]{{"第ä¸è¡"},{"第äºè¡"},{"第ä¸è¡"},{"第åè¡"}}, new String[]{"æµè¯è¡1","æµè¯è¡2"}){
/* (non-Javadoc)
* éåæ¹æ³ï¼å¤æ表åå
æ ¼æ¯å¦å¯ç¼è¾
* å¯ä»¥éè¿rowåcolumnç´¢å¼å¤ææä¸ä¸ªåå
æ ¼æ¯å¦å¯ç¼è¾
* æ¤å¤è®¾ä¸ºé½ä¸å¯ç¼è¾
* @see javax.swing.table.DefaultTableModel#isCellEditable(int, int)
*/
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
});
// å¼å§åè¡¨æ ¼ä¸æ·»å å¤éæ¡ï¼æ³¨æï¼æ¤ç¤ºä¾è¾ä¸ºç®åï¼ç¼ºçå¾å¤å¤æï¼ä¹æ²¡æå¨æ代ç æ¯æï¼
// éè¿è®¾ç½®å渲æ
// æ¹æ³ä¸ï¼ç´æ¥æ¹å¼ 使ç¨TableColumnçsetCellRendereræ¹æ³ï¼æ¨èï¼
// æ¤æ¹æ³å¯ä»¥è®¾ç½®æä¸åç渲æï¼å³ä½¿ç¨æä¸ä¸ªç»ä»¶--å³æ§ä»¶æ¥æ¾ç¤ºåå
æ ¼æ°æ®ï¼
table.getColumnModel().getColumn(1).setCellRenderer(new TableCellRenderer(){
/*(non-Javadoc)
* æ¤æ¹æ³ç¨äºåæ¹æ³è°ç¨è
è¿åæä¸åå
æ ¼ç渲æå¨ï¼å³æ¾ç¤ºæ°æ®çç»å»º--ææ§ä»¶ï¼
* å¯ä»¥ä¸ºJCheckBox JComboBox JTextArea ç
* @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)
*/
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
// å建ç¨äºè¿åç渲æç»ä»¶
JCheckBox ck = new JCheckBox();
// 使å
·æç¦ç¹çè¡å¯¹åºçå¤éæ¡éä¸
ck.setSelected(isSelected);
// 设置åébox.setSelected(hasFocus);
// 使å¤éæ¡å¨åå
æ ¼å
å±
ä¸æ¾ç¤º
ck.setHorizontalAlignment((int) 0.5f);
return ck;
}});
// æ¹æ³äºï¼å
设置åç¼è¾å¨ï¼ç¶å设置åå
æ ¼æ¸²æ
// 设置åç¼è¾å¨
// å¨ä»¥å¤éæ¡ä¸ºå¯¹è±¡è®¾ç½®åç¼è¾å¨æ¶ï¼å¿
é¡»ä¿è¯è¯¥åè½å¤è¢«ç¼è¾ï¼å¦åæ æ³æ´æ¹ç¶æ
// ï¼æ¤æ¥éª¤å¯ä»¥çç¥ï¼çç¥æ¶ä¸è¦å¿è®°å°å设为ä¸å¯ç¼è¾ï¼
// table.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(new JCheckBox()));
// 设置åå
æ ¼æ¸²æï¼è¿éæ¯è®¾ç½®è¡¨æ ¼çº§å«ç渲æï¼
/*table.setDefaultRenderer(Object.class, new TableCellRenderer(){
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
// å¤ææ¯å¦ä¸ºéè¦æ¸²æçå
if(column == 1){
// åæ¹æ³ä¸åºæ¬ä¸è´
JCheckBox box = new JCheckBox();
box.setSelected(isSelected);
// 设置åébox.setSelected(hasFocus);
box.setHorizontalAlignment((int) CENTER_ALIGNMENT); // 0.5f
return box;
}
// å¦æä¸æ¯éè¦æ¸²æçåï¼å°è£
ææ¬åæ¾ç¤ºæ°æ®
return new JTextArea(value.toString());
}});*/
// å¨å¤éæ¯éè¦æä½Ctrlé®æè
é¼ æ æä½æè¿è¿ç»çéè¦éä¸çè¡ï¼åºè¯¥ç»ç¨æ·è¯´æ
// 第ä¸ç§æ¹æ³æ¯è¢«æ¨èçï¼å 为å®å
·æéä¸çé«äº®æ¾ç¤ºï¼çé¢è½æ´å å好
table.setSize(panel.getWidth(),panel.getHeight() - 90);
table.setLocation(0, 0);
btn = new JButton("Test");
btn.setSize(80,40);
btn.setLocation((panel.getWidth()) / 2 - 40, panel.getHeight() - 80);
// æé®ç¹å»æ¶æ¾ç¤ºå½åéä¸é¡¹
btn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
for(int rowindex : table.getSelectedRows()){
JOptionPane.showMessageDialog(null, rowindex + " " + table.getValueAt(rowindex, 0));
}
}});
panel.add(table);
panel.add(btn);
this.add(panel);
}
// å®ä¹ä¸äºå¿
è¦çç»ä»¶
private JPanel panel;
private JTable table;
private JButton btn;
}