?? sample26_5.java
字號:
package wyf.jc;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;
//主類
public class Sample26_5 extends JFrame
{
//創建列標題字符串數組
String[] head={"學號","姓名","科目","成績"};
//創建表格數據字符串數組
String[][] data={{"001","王強","語文","80"},
{"002","李勇","數學","90"},{"003","馬躍","數學","85"},
{"002","李勇","外語","90"},{"003","馬躍","外語","85"}};
//創建表格模型
DefaultTableModel dtm=new DefaultTableModel(data,head);
//創建JTable對象
JTable jt=new JTable(dtm);
//將JTable封裝進滾動窗格
JScrollPane jsp=new JScrollPane(jt);
//創建輸出提示信息的文本框
JTextField jtf=new JTextField();
//創建自定義的監聽器對象
TableListener tl=new TableListener();
//聲明自定義監聽器內部類
class TableListener implements ListSelectionListener,
TableColumnModelListener,TableModelListener
{
//記錄行與列的成員變量
int row;
int col;
//實現ListSelectionListener監聽接口中的方法
public void valueChanged(ListSelectionEvent lse)
{//當選中行發生變化時會調用該方法
//獲取當前選擇的行索引
row=jt.getSelectedRow();
//調用showMsg方法
this.showMsg(row,col);
}
//實現TableColumnModelListener監聽接口中的方法
public void columnSelectionChanged(ListSelectionEvent lse)
{//當選中列發生變化時會調用該方法
//獲取當前選擇的列索引
col=jt.getSelectedColumn();
//調用showMsg方法
this.showMsg(row,col);
}
//對TableColumnModelListener監聽接口中不需要的方法進行空實現
public void columnMarginChanged(ChangeEvent ce){}
public void columnMoved(TableColumnModelEvent tcme){}
public void columnRemoved(TableColumnModelEvent tcme){}
public void columnAdded(TableColumnModelEvent tcme){}
//實現TableModelListener監聽接口中的方法
public void tableChanged(TableModelEvent e)
{//當表格內容變化時執行此方法
//獲取當前選擇單元格的值
String str=(String)jt.getValueAt(row,col);
//設置顯示信息
jtf.setText("您編輯了第"+(row+1)+"行第"+(col+1)+"列的內容,新值為:"+str+"”。");
}
//創建顯示提示信息的方法
public void showMsg(int r,int c)
{
//獲取當前選擇單元格的值
String str=(String)jt.getValueAt(r,c);
//設置顯示信息
jtf.setText("您當前選擇的是第"+(r+1)+"行第"+(c+1)+"列,值為:“"+str+"”。");
}
}
public Sample26_5()
{
//設置本本框不可編輯
jtf.setEditable(false);
//將文本框添加進窗體頂部
this.add(jtf,BorderLayout.NORTH);
//使用TableModel接口中定義的getColumnCount方法根據數據模型創建表列
jt.createDefaultColumnsFromModel();
//為表格選擇模型注冊監聽器
jt.getSelectionModel().addListSelectionListener(tl);
//為表格列模型注冊監聽器
jt.getColumnModel().addColumnModelListener(tl);
//為表格模型注冊監聽器
jt.getModel().addTableModelListener(tl);
//將含JTable的滾動窗格添加進窗體的中間
this.add(jsp,BorderLayout.CENTER);
//設置窗體的關閉動作、標題、大小位置以及可見性
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("表格相關事件的示例");
this.setBounds(100,100,400,200);
this.setVisible(true);
}
public static void main(String[] args)
{
//創建Sample26_5窗體對象
new Sample26_5();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -