📄 guiuse.java
字号:
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.JScrollPane;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.JOptionPane;
import java.awt.*;
import java.awt.event.*;
public class GUIUse extends JFrame {
private boolean DEBUG = true;
public GUIUse() {
//首先调用父类JFrame的构造方法生成一个窗口
super("Phone");
//生成表格数据对象myModel
MyTableModel myModel = new MyTableModel();
//生成表格对象table,并将其数据来源关联为myModel
JTable table = new JTable(myModel);
//设置表格的显示尺寸
table.setPreferredScrollableViewportSize(new Dimension(400, 200));
//生成一个带滚动条的面板
JScrollPane scrollPane = new JScrollPane(table);
//将带滚动条的面板添加入窗口中
getContentPane().add(scrollPane, BorderLayout.CENTER);
//生成事件监听器
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
//MyTableModel类,用于存放表格数据
class MyTableModel extends AbstractTableModel {
//表格中第一行的内容保存在字符串数组columnNames中
final String[] columnNames = {"First Name","Sex","Telephone"};
//其余各行的内容保存在二维数组data中
final Object[][] data = {{"Wenjian", "male","0105521534"},
{"zyiyi", "female","0105548762"},
{"Xiaoxia", "female","01055687142"},
{"Lala", "male","0103656965"},
{"Wangyong", "male","0105846925"},
{"Guanyuan", "female","0106685932"},
{"Liusong", "male","0105569865"},
{"Shenghao", "male","01013696596"},
{"Sasa", "female","0105565452"},
{"Bobo", "female","01012345678"},
{"Tuding", "male","01098745632"},
{"ChenLei", "male","01025896336"}};
/*重载AbstractTableModel中的方法,以便为JTable对象所调用。
程序员必须根据采用的数据类型加以恰当实现。*/
//获得列的数目,必须重载
public int getColumnCount() {
return columnNames.length;
}
//获得行的数目,必须重载
public int getRowCount() {
return data.length;
}
//获得某列的名字,必须重载
public String getColumnName(int col) {
return columnNames[col];
}
//获得某行某列的数据,必须重载
public Object getValueAt(int row, int col) {
return data[row][col];
}
//判断每个单元格的类型,根据需要进行重载
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
//将表格声明为可编辑的,根据需要进行重载
public boolean isCellEditable(int row, int col) {
if (col < 2) {
return false;
} else {
return true;
}
}
//改变某个数据的值,根据需要进行重载
public void setValueAt(Object value, int row, int col) {
if (DEBUG) {
System.out.println("Setting value at " + row + "," + col + " to " + value + " (an instance of " + value.getClass() + ")");
}
if (data[0][col] instanceof Integer &&!(value instanceof Integer)) {
try {
data[row][col] = new Integer(value.toString());
fireTableCellUpdated(row, col);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(GUIUse.this,"The \"" +getColumnName(col)+ "\" column accepts only integer values.");
}
} else {
data[row][col] = value;
fireTableCellUpdated(row, col);
}
if (DEBUG) {
System.out.println("New value of data:");
printDebugData();
}
}
//打印数据,必须重载
private void printDebugData() {
int numRows = getRowCount();
int numCols = getColumnCount();
for (int i=0; i < numRows; i++) {
System.out.print(" row " + i + ":");
for (int j=0; j < numCols; j++) {
System.out.print(" " + data[i][j]);
}
System.out.println();
}
System.out.println("--------------------------");
}
}
public static void main(String[] args) {
GUIUse frame = new GUIUse();
frame.pack();
frame.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -