📄 tabledialog.java
字号:
import javax.swing.JDialog;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.DefaultCellEditor;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.JLabel;
import java.awt.Color;
import javax.swing.DefaultListSelectionModel;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import java.awt.FlowLayout;
import javax.swing.JComboBox;
import javax.swing.JCheckBox;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
class TableDialog extends JDialog implements ActionListener,ListSelectionListener{
GridBagLayout gridBagLayout1=new GridBagLayout();
GridBagConstraints gridBagConstraints1=new GridBagConstraints();
JScrollPane jScrollPane1=new JScrollPane();
final String[] columnName={"姓名","月薪","部门","领取状态"}; //表格的列标题
final Object[][] columnData={ //行列数据
{"叶怀中",new Integer(2000),"软件部",new Boolean(true)},
{"梁义飞",new Integer(3500),"办公室",new Boolean(false)},
{"王杏帘",new Integer(5000),"工程部",new Boolean(true)},
{"陈淼",new Integer(6500),"局长室",new Boolean(false)},
{"周卫东",new Integer(3000),"财务部",new Boolean(true)}
};
final Object[] oneRow={"",new Integer(2000),"工程部",new Boolean(false)}; //作为新插入行的默认值
DefaultListSelectionModel dlsm=new DefaultListSelectionModel();
DefaultTableModel dtm = new DefaultTableModel(columnData,columnName){
//重载用来获得表格每列数据类型的getColumnClass方法
public Class getColumnClass(int c) {return getValueAt(0, c).getClass();}
public boolean isCellEditable(int row, int col) {return true;}
};
JTable jTableView=new JTable(dtm);
EditPane editPane1=new EditPane();
int current_row;
TableDialog(){
setTitle("JTable表格示例");
setSize(400,180);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
JComboBox comboBox1=new JComboBox();
comboBox1.addItem("软件部");
comboBox1.addItem("办公室");
comboBox1.addItem("工程部");
comboBox1.addItem("局长室");
comboBox1.addItem("财务部");
TableColumn DepartmentColumn = jTableView.getColumn("部门");
//设置"部门"一列采用组合框作为编辑器
DepartmentColumn.setCellEditor(new DefaultCellEditor(comboBox1));
//
DefaultTableCellRenderer DepartmentColumnRenderer = new DefaultTableCellRenderer();
DepartmentColumnRenderer.setBackground(Color.yellow);
DepartmentColumnRenderer.setToolTipText("点击该列的组合框以选择部门");
DepartmentColumn.setCellRenderer(DepartmentColumnRenderer);
//
TableColumn moneyColumn = jTableView.getColumn("月薪");
DefaultTableCellRenderer moneyColumnRenderer = new DefaultTableCellRenderer() {
public void setValue(Object value) {
int cellValue = (value instanceof Number) ? ((Number)value).intValue() : 0;
setForeground((cellValue < 5000) ? Color.black : Color.red);
setText((value == null) ? "" : value.toString());
}
};
moneyColumnRenderer.setHorizontalAlignment(JLabel.RIGHT);
moneyColumn.setCellRenderer(moneyColumnRenderer);
moneyColumn.setPreferredWidth(120);
//
//TableColumn obtainColumn=jTableView.getColumn("领取状态");
//JCheckBox checkBox1=new JCheckBox();
//obtainColumn.setCellEditor(new DefaultCellEditor(checkBox1));
jTableView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
getContentPane().setLayout(gridBagLayout1);
gridBagConstraints1.gridx=0;
gridBagConstraints1.gridy=0;
gridBagConstraints1.weightx=100;
gridBagConstraints1.weighty=90;
gridBagConstraints1.fill=GridBagConstraints.BOTH;
gridBagLayout1.setConstraints(jScrollPane1,gridBagConstraints1);
getContentPane().add(jScrollPane1);
jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jScrollPane1.getViewport().setView(jTableView);
//
gridBagConstraints1.gridx=0;
gridBagConstraints1.gridy=1;
gridBagConstraints1.weightx=100;
gridBagConstraints1.weighty=10;
gridBagConstraints1.fill=GridBagConstraints.BOTH;
gridBagLayout1.setConstraints(editPane1,gridBagConstraints1);
getContentPane().add(editPane1);
//
editPane1.jButton1.addActionListener(this);
editPane1.jButton2.addActionListener(this);
editPane1.jButton3.addActionListener(this);
//
dlsm.addListSelectionListener(this);
jTableView.setSelectionModel(dlsm);
show();
}
public void actionPerformed(ActionEvent e){
Object srcObj=e.getSource();
if(srcObj==editPane1.jButton1){
dtm.addRow(oneRow);
}
else if(srcObj==editPane1.jButton2)
dtm.removeRow(jTableView.getSelectedRow());
else if(srcObj==editPane1.jButton3){
current_row=jTableView.getSelectedRow();
if(current_row!=-1)
System.out.println(dtm.getValueAt(current_row,0)+":工资为"+dtm.getValueAt(current_row,1));
}
}
public void valueChanged(ListSelectionEvent e){
current_row=jTableView.getSelectedRow();
System.out.println(dtm.getValueAt(current_row,0)+":工资为"+dtm.getValueAt(current_row,1));
}
public static void main(String[] args){
TableDialog tableDialog1=new TableDialog();
}
}
class EditPane extends JPanel{
FlowLayout flowLayout1=new FlowLayout();
JButton jButton1=new JButton("插入一行");
JButton jButton2=new JButton("删除一行");
JButton jButton3=new JButton("打印当前行");
EditPane(){
add(jButton1);
add(jButton2);
add(jButton3);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -