本文目錄一覽:
- 1、JAVA如何實現jtable 表頭實現類似Excel篩選功能
- 2、JAVA的table如何設置默認寬度啊
- 3、如何在java添加table
- 4、java編程的table類如何實現保存操作
- 5、java 獲取table 的內容
JAVA如何實現jtable 表頭實現類似Excel篩選功能
用java的JTable實現類似Excel的報表控制項主要需要完成的工作如下:
1. 單元格合併與拆分。
2. 基於JTextArea的渲染器,用來實現多行輸入。
3. 由於採用JTextArea作為渲染器,導致文本只能向左對齊,後來通過重載JTextArea得以實現居中,居右,字體下劃線等效果:)。
4. 滑鼠動態拉行高,拉行寬。
5. 發現行數一多,導致性能下降很歷害,所以實現了只刷新當前可視屏幕區域。
6. 單元格屬性的設定:背景顏色、前景顏色、字體(大小,粗斜體,下劃線,刪除線)、對角線單元格(中國式報表)、邊框線等
7. 列印預覽
8. 列印
9. 自己實現的列印設置對話框(列印水印、列印方向、紙張頁邊距、列印紙張頁數範圍、列印順序、設定列印的頁眉和頁腳、放大列印或縮小列印)
10.往單元格載入圖片,可預覽和列印出來
11.套打模式,在table顯示標尺,並重置行高為1cm,行寬為2cm,以方便使用者對應套打紙張
12.為單元格繪製邊線
13.查找和替換
14.增加行和列,刪除行和列
15.格式刷
16.排序,升和降。可設定優先排序的形式,數值優先或著是中文優先,中文按照拼音排序
17.考貝,複製和貼粘
18.插入圖表,目前只實現了柱狀圖表
19.求和
20.各種熱鍵組合
21.顯示和隱藏table網格線
Java實現jtable 表頭實現類似Excel篩選功能,你可以採取以上步驟進行總結,希望你早日得到答案。
JAVA的table如何設置默認寬度啊
逐個Column設置,
TableColumn 有方法
void
setMaxWidth(int maxWidth)
將 TableColumn 的最大寬度設置為 maxWidth;如果 maxWidth 小於最小寬度,則設置為最小寬度。
void
setMinWidth(int minWidth)
將 TableColumn 的最小寬度設置為 minWidth,如有必要,調整新的最小寬度以確保 0 = minWidth = maxWidth。
void
setPreferredWidth(int preferredWidth)
將此列的首選寬度設置為 preferredWidth。
void
setWidth(int width)
不應使用此方法來設置 JTable 中列的寬度,而應使用 setPreferredWidth。
void
sizeWidthToFit()
調整 TableColumn 的大小,以適合其標題單元格的寬度。
如何在java添加table
String[] columnNames = {“第一列”, “第二列”}; //定義列欄位信息
Object[][] cellData = {{“11”, “12”},{“21”, “22”}}; //定義表格數據欄位
JTable table = new JTable(cellData, columnNames);
然後可以直接將這個table添加到指定的容器上,例如有一個JFrame對象f,可以通過f.add(table)的方式來添加。
java編程的table類如何實現保存操作
1、 類Vector:
類Vector是Java的歷史集合類,隸屬於java.util包。它包裝了異構鏈表和數組雜合體,具有以下兩個特點:
* 向量是異構的,不要求每個元素的類型相同,向量中可以混合多種對象類型;
* 向量是數組雜合體,因為它們可以在增加元素時動態增大。
其異構性正好符合資料庫記錄中屬性類型不一的特點,而其動態性也正好符合資料庫查詢時,結果集記錄個數不定的特點。
類Vector定義如下:
public class Vector extends AbstractList
implements List , Cloneable , Serializable{…}
實現了向量成員的查找、新增、刪除等方法。如:add(Object obj)可方便地加入一個對象;get(int index)可方便地得到向量中的一個對象;remove(Object obj)。則可方便地刪除向量中一個對象。
· 2、 類JTable:
JTable組件是Swing組件中比較複雜的小件,隸屬於javax.swing包,它能以二維表的形式顯示數據。類JTable定義如下:
public class JTable extends JComponent
implements TableModelListener, Scrollable, TableColumnModelListener,
ListSelectionListener, CellEditorListener, Accessible{…}
類JTable在顯示數據時具有以下特點:
* 可定製性:可以定製數據的顯示方式和編輯狀態;
* 異構性:可以顯示不同類型的數據對象,甚至包括顏色、圖標等複雜對象;
* 簡便性:可以以預設方式輕鬆地建立起一個二維表。
其可定製性可滿足不同用戶和場合的要求,異構性也正好符合資料庫訪問結果集中屬性類型不一的特點。類JTable提供了極為豐富的二維表格操作方法,如設置編
輯狀態、顯示方式、選擇行列等,在此不一一贅述。
使用類JTable顯示數據之前,必須根據情況生成定製模型、單元繪製器或單元編輯器。類AbstractListModel用來定製用戶自己的數據模型,這個類在後面要介紹。
TableCellRenderer介面用來定製單元繪製器,TableCellEditor介面用來定製單元編輯器,這兩個介面主要用於顏色對象的處理上,在示例中沒有用到,不做過多說明。
· 3、 類AbstractTableModel:
類AbstractTableModel是一個抽象類,沒有完全實現,不能實例化,使用時必須在程序中實現方法。它隸屬於javax.swing.table 。類定義如下:
public abstract class AbstractTableModel extends Object
implements TableModel, Serializable{…}
類AbstractTableModel提供了TableModel介面中絕大多數方法的預設實現。TableModel介面定義了JTable 的基礎數據結構。用戶要生成自己的數據模型,本來可以
通過實現TableModel介面中所有方法來滿足要求,但管理聽眾表的功能對於所有數據模型是共同的,所以在javax.swing.table中又定義了類AbstractTableModel來
處理這個工作。它既管理聽眾表,又為生成TableModelEvents事件並委託給聽眾提供了便利。
要想生成一個具體的TableModel作為AbstractTableMode的子類,至少必須實現下面三個方法:
public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int column);
至此,我們可以建立一個簡單二維表(5×5),實現方法如下:
TableModel dataModel = new AbstractTableModel() {
public int getColumnCount() { return 5; }
public int getRowCount() { return 5;}
public Object getValueAt(int row, int col) { return new Integer(row*col); }
};
JTable table = new JTable(dataModel);
JScrollPane scrollpane = new JScrollPane(table);
· 二、 資料庫及其連接方法簡介:
示例採用Sybase資料庫系統,資料庫存放在資料庫伺服器中。路徑為:D:/WORKER,資料庫名為:worker.dbf。具有以下欄位:
欄位名
類型
Wno(職工號)
VARCHAR
Wname(職工名)
VARCHAR
Sex(性別)
VARCHAR
Birthday(出生日期)
DATE
Wage(工資)
FLOAT
要連接此資料庫,需使用java.sql包中的類DriverManager。此類是用於管理JDBC驅動程序的實用程序類。它提供了通過驅動程序取得連接、註冊,撤消驅動程序, 設置登記和資料庫訪問登錄超時等方法。具體連接方法如下:
第一步:定位、裝入和鏈接SybDriver類;
driver=”com.sybase.jdbc.SybDriver”;
SybDriver sybdriver=(SybDriver)Class.forName(driver).newInstance();
第二步:註冊SybDriver類;
DriverManager.registerDriver(sybdriver);
第三步:取得連接(SybConnection)對象引用。
user=”sa”;
password=””;
url=”jdbc:sybase:Tds:202.117.203.114:5000/WORKER”;
SybConnection connection=(SybConnection)DriverManager.getConnection
(url,user,password);
建立完連接後,即可通過Statement介面進行資料庫的查詢與更改。
· 三、 實現方法:
限於篇幅,在此只給出核心代碼,包引入、界面處理、變數定義等部分不再介紹。
第一步:對象聲明。
AbstractTableModel tm;//聲明一個類AbstractTableModel對象
JTable jg_table;//聲明一個類JTable對象
Vector vect;//聲明一個向量對象
JScrollPane jsp;//聲明一個滾動杠對象
String title[]={“職工號”,”職工名”,”性別”,”出生日期”,”工資”};
//二維表列名
第二步:定製表格。
1、實現抽象類AbstractTableModel對象tm中的方法:
vect=new Vector();//實例化向量
tm=new AbstractTableModel(){
public int getColumnCount(){
return title.length;}//取得表格列數
public int getRowCount(){
return vect.size();}//取得表格行數
public Object getValueAt(int row,int column){
if(!vect.isEmpty())
return
((Vector)vect.elementAt(row)).elementAt(column);
else
return null;}//取得單元格中的屬性值
public String getColumnName(int column){
return title[column];}//設置表格列名
public void setValueAt(Object value,int row,int column){}
//數據模型不可編輯,該方法設置為空
public Class getColumnClass(int c){
return getValueAt(0,c).getClass();
}//取得列所屬對象類
public boolean isCellEditable(int row,int column){
return false;}//設置單元格不可編輯,為預設實現
};
2、定製表格:
jg_table=new JTable(tm);//生成自己的數據模型
jg_table.setToolTipText(“顯示全部查詢結果”);//設置幫助提示
jg_table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//設置表格調整尺寸模式
jg_table.setCellSelectionEnabled(false);//設置單元格選擇方式
jg_table.setShowVerticalLines(true);//設置是否顯示單元格間的分割線
jg_table.setShowHorizontalLines(true);
jsp=new JScrollPane(jg_table);//給表格加上滾動杠
第三步:顯示查詢結果。
1、 連接資料庫:第二部分已給出。
2、 資料庫查詢:
Statement stmt=connection.createStatement();
ResultSet rs=stmt.executeQuery(“select * from worker”);
3、 顯示查詢結果:
vect.removeAllElements();//初始化向量對象
tm.fireTableStructureChanged();//更新表格內容
while(rs.next()){
Vector rec_vector=new Vector();
//從結果集中取數據放入向量rec_vector中
rec_vector.addElement(rs.getString(1));
rec_vector.addElement(rs.getString(2));
rec_vector.addElement(rs.getString(3));
rec_vector.addElement(rs.getDate(4));
rec_vector.addElement(new Float(rs.getFloat(5)));
vect.addElement(rec_vector);//向量rec_vector加入向量vect中
}
tm.fireTableStructureChanged();//更新表格,顯示向量vect的內容。
java 獲取table 的內容
寫一個類,繼承DefaultTableCellRenderer,
重寫它的
Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
方法,,先獲得這一行(row)的那一個int數據,如果大於100,就setBackground(Color.RED),小於100,setBackground(Color.BLUE);
再
table.setDefaultRenderer(table.getColumnClass(0), new MyTableRender());
就好
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/159604.html