日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JTable常见用法细则

發(fā)布時(shí)間:2023/12/9 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JTable常见用法细则 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

JTable是Swing編程中很常用的控件,這里總結(jié)了一些常用方法以備查閱.歡迎補(bǔ)充,轉(zhuǎn)載請注明作者與出處.

一.創(chuàng)建表格控件的各種方式:
1)??調(diào)用無參構(gòu)造函數(shù).

JTable?table?=?new?JTable();


2)??以表頭和表數(shù)據(jù)創(chuàng)建表格.

Object[][]?cellData?=?{{"row1-col1",?"row1-col2"},{"row2-col1",?"row2-col2"}};
String[]?columnNames?=?{"col1",?"col2"};
????
JTable?table?=?new?JTable(cellData,?columnNames);


3)??以表頭和表數(shù)據(jù)創(chuàng)建表格,并且讓表單元格不可改.

String[]?headers?=?{?"表頭一",?"表頭二",?"表頭三"?};
Object[][]?cellData?=?null;

DefaultTableModel?model?=?new?DefaultTableModel(cellData,?headers)?{

??public?boolean?isCellEditable(int?row,?int?column)?{
????return?false;
??}
};

table?=?new?JTable(model);


二.對表格列的控制
1) 設(shè)置列不可隨容器組件大小變化自動調(diào)整寬度.

table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);


2) 限制某列的寬度.

TableColumn?firsetColumn?=?table.getColumnModel().getColumn(0);
firsetColumn.setPreferredWidth(30);
firsetColumn.setMaxWidth(30);
firsetColumn.setMinWidth(30);


3) 設(shè)置當(dāng)前列數(shù).

DefaultTableModel?tableModel?=?(DefaultTableModel)?table.getModel();
int?count=5;
tableModel.setColumnCount(count);


4) 取得表格列數(shù)

int?cols?=?table.getColumnCount();


5) 添加列

DefaultTableModel?tableModel?=?(DefaultTableModel)?table.getModel();
tableModel.addColumn("新列名");


6) 刪除列

table.removeColumn(table.getColumnModel().getColumn(columnIndex));//?columnIndex是要刪除的列序號


三.對表格行的控制
1) 設(shè)置行高

table.setRowHeight(20);


2) 設(shè)置當(dāng)前航數(shù)

DefaultTableModel?tableModel?=?(DefaultTableModel)?table.getModel();
int?n=5;
tableModel.setRowCount(n);


3) 取得表格行數(shù)

int?rows?=?table.getRowCount();


4) 添加表格行

DefaultTableModel?tableModel?=?(DefaultTableModel)?table.getModel();
tableModel.addRow(new?Object[]{"sitinspring",?"35",?"Boss"});


5) 刪除表格行

DefaultTableModel?tableModel?=?(DefaultTableModel)?table.getModel();
model.removeRow(rowIndex);//?rowIndex是要刪除的行序號


四.存取表格單元格的數(shù)據(jù)
1) 取單元格數(shù)據(jù)

DefaultTableModel?tableModel?=?(DefaultTableModel)?table.getModel();
String?cellValue=(String)?tableModel.getValueAt(row,?column);//?取單元格數(shù)據(jù),row是行號,column是列號


2) 填充數(shù)據(jù)到表格.
注:數(shù)據(jù)是Member類型的鏈表,Member類如下:

public?class?Member{
????//?名稱
????private?String?name;
????
????//?年齡
????private?String?age;
????
????//?職務(wù)
????private?String?title;
}


填充數(shù)據(jù)的代碼:

public?void?fillTable(List<Member>?members){
??DefaultTableModel?tableModel?=?(DefaultTableModel)?table
??.getModel();
??tableModel.setRowCount(0);//?清除原有行
??
??//?填充數(shù)據(jù)
??for(Member?member:members){
????String[]?arr=new?String[3];
????arr[0]=member.getName();
????arr[1]=member.getAge();
????arr[2]=member.getTitle();
????
????//?添加數(shù)據(jù)到表格
????tableModel.addRow(arr);
??}
??
??//?更新表格
??table.invalidate();
}


2) 取得表格中的數(shù)據(jù)

public?List<Member>?getShowMembers(){
??List<Member>?members=new?ArrayList<Member>();
??
??DefaultTableModel?tableModel?=?(DefaultTableModel)?table
??.getModel();
??
??int?rowCount=tableModel.getRowCount();
??
??for(int?i=0;i<rowCount;i++){
????Member?member=new?Member();
????
????member.setName((String)tableModel.getValueAt(i,?0));//?取得第i行第一列的數(shù)據(jù)
????member.setAge((String)tableModel.getValueAt(i,?1));//?取得第i行第二列的數(shù)據(jù)
????member.setTitle((String)tableModel.getValueAt(i,?2));//?取得第i行第三列的數(shù)據(jù)
????
????members.add(member);
??}
??
??return?members;
}


五.取得用戶所選的行
1) 取得用戶所選的單行

int?selectRows=table.getSelectedRows().length;//?取得用戶所選行的行數(shù)
DefaultTableModel?tableModel?=?(DefaultTableModel)?table.getModel();

if(selectRows==1){
??int?selectedRowIndex?=?table.getSelectedRow();?//?取得用戶所選單行??
??
??.//?進(jìn)行相關(guān)處理
}


2) 取得用戶所選的多行

int?selectRows=table.getSelectedRows().length;//?取得用戶所選行的行數(shù)
DefaultTableModel?tableModel?=?(DefaultTableModel)?table.getModel();

if(selectRows>1)
??int[]?selRowIndexs=table.getSelectedRows();//?用戶所選行的序列
??
??for(int?i=0;i<selRowIndexs.length;i++){
????//?用tableModel.getValueAt(row,?column)取單元格數(shù)據(jù)
????String?cellValue=(String)?tableModel.getValueAt(i,?1);
??}
}


六.添加表格的事件處理

view.getTable().addMouseListener(new?MouseListener()?{
??public?void?mousePressed(MouseEvent?e)?{
????//?鼠標(biāo)按下時(shí)的處理
??}

??public?void?mouseReleased(MouseEvent?e)?{
????//?鼠標(biāo)松開時(shí)的處理
??}

??public?void?mouseEntered(MouseEvent?e)?{
????//?鼠標(biāo)進(jìn)入表格時(shí)的處理
??}

??public?void?mouseExited(MouseEvent?e)?{
????//?鼠標(biāo)退出表格時(shí)的處理
??}

??public?void?mouseClicked(MouseEvent?e)?{
????//?鼠標(biāo)點(diǎn)擊時(shí)的處理
??}
});
轉(zhuǎn)自:http://www.blogjava.net/sitinspring/archive/2007/12/18/168425.html

總結(jié)

以上是生活随笔為你收集整理的JTable常见用法细则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。