📄 jtabledemo.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
import javax.swing.*;
import javax.swing.event.*;
public class JTableDemo extends JFrame implements TableModelListener
{
private JTable table; //表格
private MyTable mytable; //TableModel
private JComboBox c; //班级
private JLabel label;
public JTableDemo()
{
super("TableModelDemo");
setSize(400, 300);
try
{ //设置系统外观
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exception e){}
Container container = getContentPane();
//创建表格
mytable = new MyTable();
mytable.addTableModelListener(this);
table = new JTable(mytable);
//创建下拉框
c = new JComboBox();
c.addItem("03A01");
c.addItem("03A02");
c.addItem("03A03");
//设置表格第3列的单元格编辑器
table.getColumnModel().getColumn(2).setCellEditor(new DefaultCellEditor(c));
container.add(new JScrollPane(table));
//创建标签,显示信息
label = new JLabel("", JLabel.CENTER);
label.setPreferredSize(new Dimension(400, 30));
label.setFont(new Font("Serif", Font.PLAIN, 14));
container.add(label, BorderLayout.SOUTH);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//处理TableModelEvent事件
public void tableChanged(TableModelEvent event)
{
int row = event.getFirstRow();
String fullName = ((String)(mytable.getValueAt(row, 1)));
String className =((String)(mytable.getValueAt(row, 2)));
label.setText(fullName + "现在是 " + className + " 的同学");
}
public static void main(String args[])
{
JTableDemo application = new JTableDemo();
}
}
class MyTable extends AbstractTableModel
{
private Object[][] data =
{
{"032520", "张三", "03A01", new Integer(50), new Integer(50),
new Integer(50),new Integer(50 + 50 + 50)},
{"032521", "李四", "03A02", new Integer(45), new Integer(46),
new Integer(48), new Integer(45 + 46 + 48)}
};
private String[] header = {"学号", "姓名", "班级", "数学", "语文", "英语", "总分"};
//获取列数
public int getColumnCount()
{
return header.length;
}
//获取行数
public int getRowCount()
{
return data.length;
}
//获取列名
public String getColumnName(int col)
{
return header[col];
}
//获取单元格对应的值
public Object getValueAt(int row, int col)
{
return data[row][col];
}
//获取每列数据的类型
public Class getColumnClass(int cc)
{
return getValueAt(0, cc).getClass();
}
//设置单元格为可编辑
public boolean isCellEditable(int rowIndex, int columnIndex)
{
return true;
}
//设置单元格所对应的值,
public void setValueAt(Object value, int row, int col)
{
if(col != 2)
return;
data[row][col] = value;
fireTableCellUpdated(row, col);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -