Swing元件中JList的運用
一丶簡述
JTable是將資料以表格的形式顯示給使用者看的一種元件,它包括行和列,其中每列代表一種屬性,例如:學號,姓名,成績等等。而每行代表的是一個實體,例如一個學生。在JTable中,預設情況下列會平均分配父容器的寬度,你可以通過滑鼠改變列的寬度,還可以交換列的排列順。下面進入正題,介紹JTable的一些建構函式,JTable有許多構造函,這裡只對部分建構函式和功能進行介紹。
二、構造一個 JTable
構造一個 JTable來顯示二維陣列rowData 中的值,其列名稱為 columnNames。
程式碼如下
public JTableTest()
{
intiComponent ();
}
/**
* 初始化窗體元件
*/
private void intiComponent()
{
/*
* 設定JTable的列名
*/
String[] columnNames =
{ "姓名", "學號", "性別", "工期", "學院", "學校" };
Object[][] obj = new Object[2][6];
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 6; j++)
{
switch (j)
{
case 0:
obj[i][j] = "甲乙丙 ";
break;
case 1:
obj[i][j] = "123456";
break;
case 2:
obj[i][j] = "男";
break;
case 3:
obj[i][j] = "十年";
break;
case 4:
obj[i][j] = "電腦科學與應用數學學院";
break;
case 5:
obj[i][j] = "xx學院";
break;
}
}
}
/*
* JTable的其中一種構造方法
*/
JTable table = new JTable(obj, columnNames);
/*
* 設定JTable的列預設的寬度和高度
*/
TableColumn column = null;
int colunms = table.getColumnCount();
for(int i = 0; i < colunms; i++)
{
column = table.getColumnModel().getColumn(i);
/*將每一列的預設寬度設定為100*/
column.setPreferredWidth(100);
}
/*
* 設定JTable自動調整列表的狀態,此處設定為關閉
*/
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
/*用JScrollPane裝載JTable,這樣超出範圍的列就可以通過滾動條來檢視*/
JScrollPane scroll = new JScrollPane(table);
scroll.setSize(300, 200);
add(scroll);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
}
public static void main(String[] args)
{
new JTableTest();
}
執行結果如圖:
三、構造一個JTable
構造一個JTable,使用資料模型dm、預設的列模型和預設的選擇模型對其進行初始化。
程式碼如下:
/**
* 初始化窗體元件
*/
private void intiComponent()
{
JTable table = new JTable(new MyTableModel());
/* 用JScrollPane裝載JTable,這樣超出範圍的列就可以通過滾動條來檢視 */
JScrollPane scroll = new JScrollPane(table);
add(scroll);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
}
private class MyTableModel extends AbstractTableModel
{
/*
* 這裡和剛才一樣,定義列名和每個資料的值
*/
String[] columnNames =
{ "姓名", "學號", "年齡", "成績", "選擇" };
Object[][] data = new Object[2][5];
/**
* 構造方法,初始化二維陣列data對應的資料
*/
public MyTableModel()
{
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 5; j++)
{
if (0 == i)
{
switch (j)
{
case 0:
data[i][j] = "甲";
break;
case 1:
data[i][j] = "20170101";
break;
case 2:
data[i][j] = "18";
break;
case 3:
data[i][j] = "90";
break;
case 4:
data[i][j] = new Boolean(false);
break;
}
}
if (1 == i)
{
switch (j)
{
case 0:
data[i][j] = "乙";
break;
case 1:
data[i][j] = "20170102";
break;
case 2:
data[i][j] = "18";
break;
case 3:
data[i][j] = "63";
break;
case 4:
data[i][j] = new Boolean(false);
break;
}
}
}
}
}
// 以下為繼承自AbstractTableModle的方法,可以自定義
/**
* 得到列名
*/
@Override
public String getColumnName(int column)
{
return columnNames[column];
}
/**
* 重寫方法,得到表格列數
*/
@Override
public int getColumnCount()
{
return columnNames.length;
}
/**
* 得到表格行數
*/
@Override
public int getRowCount()
{
return data.length;
}
/**
* 得到資料所對應物件
*/
@Override
public Object getValueAt(int rowIndex, int columnIndex)
{
return data[rowIndex][columnIndex];
}
/**
* 得到指定列的資料型別
*/
@Override
public Class<?> getColumnClass(int columnIndex)
{
return data[0][columnIndex].getClass();
}
/**
* 指定設定資料單元是否可編輯.這裡設定"姓名","學號"不可編輯
*/
@Override
public boolean isCellEditable(int rowIndex, int columnIndex)
{
if (columnIndex < 2)
return false;
else
return true;
}
/**
* 如果資料單元為可編輯,則將編輯後的值替換原來的值
*/
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex)
{
data[rowIndex][columnIndex] = aValue;
/*通知監聽器資料單元資料已經改變*/
fireTableCellUpdated(rowIndex, columnIndex);
}
}
public static void main(String[] args)
{
new JTableTest();
}```
執行結果如下:
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/2018112519230240.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hjc29jb29s,size_16,color_FFFFFF,t_70)
這裡要指出的是每個資料單元的都有個cell renderer根據其資料型別將資料進行繪畫顯示出來。預設情況下boolean型別對應的是CheckBox物件,Object型別是將物件的字元顯示出來,ImageIcon是將圖片以lable形式顯示出來等等.具體的可以檢視API文件.
相關推薦
Swing元件中JList的運用
一丶簡述 JTable是將資料以表格的形式顯示給使用者看的一種元件,它包括行和列,其中每列代表一種屬性,例如:學號,姓名,成績等等。而每行代表的是一個實體,例如一個學生。在JTable中,預設情況下列會平均分配父容器的寬度,你可以通過滑鼠改變列的寬度,還可以交換
JAVA第三次作業——Swing元件中Jist的運用
0x00 簡述 Swing是GUI(圖形使用者介面)開發工具包,內容豐富,簡單易用,所以本篇文章中只編寫Swing中的Jlist元件,其他Swing中的元件相關內容這裡筆者就不介紹了,文章中未涉及的元件讀者請自行去查閱相關資料。 0x01 Jframe框架
Swing元件中面板(JPanel)的使用
JPanel元件定義面板實際上是一種容器元件,用來容納各種其他輕量級元件。此外,使用者還可以用這種面板容器繪製圖形。 JPanel的構造方法如下: JPanel():建立具有雙緩衝和流佈局(FlowLayout)的面板。 JPanel(LayoutManager layout):建立具有制定
(譯)函式式元件在Vue.js中的運用
你是否曾經遇到過這樣一個場景,你有個需求需要引入一個第三方庫,然而你只需要使用這個庫裡面某一個功能,如果這個庫不支援分模組匯出的話,就會因為引入整個庫而導致專案體積變大,進而影響專案載入效能。 再比如,下拉列表、時間選擇器或者自動填充屬性等自定義控制元件都是非常複雜的,需要考慮很多邊緣的複雜
java中的swing元件、主要三大布局管理器的應用
一、JFrame的簡單運用: package com.test1; import java.awt.*; import javax.swing.*; public class Demo1_1 extends JFrame{ //定義按鈕元件 JButton jb1=n
淺談redux-form在項目中的運用
actions 想象 數據校驗 搭建 swe sage Redux aar 狀態 準則 先說一下redux的使用場景,因為如果沒有redux,那更不會有redux-form。 redux基於Flux架構思想,是一個狀態管理框架,其目標是解決單頁面應用中復雜的狀態管理問題。
堆 在遊戲中的運用
大於 key eas 序列 keyword 最大 spa ack -h * 定時器的應用與原理: 遊戲中。活動的狀態、遊戲數據的保存與載入、BOSS刷新時間等等,都可能會用到定時器。而堆對於定時器的實現有著至關關鍵的數據。 定時器的工作原理事實上不難,就是內部保
數組中的運用
() _array 維數 關於 == prev 支持 而且 回調 通過foreach來遍歷一個數組(重要,要求掌握) 語法:foreach(數組名 as $value) 還有一個用法:語法: Foreach(數組名 as $key =>$value) 3)l
【整理】分塊在數論中的運用(初稿)(各位幫幫忙填下坑,裏面列的好多都不會)
body element set max main lucas定理 們的 prev 成了 之前已經做過幾個分塊的水題,導致nmphy居然口出狂言:“高中學過,簡單”。(現在nmphy收回他的話,並且跪著寫下這篇總結) 前言: 由於數
【ASP.NET 系列】淺談緩存技術在ASP.NET中的運用
進行 喜歡 之間 framework cnblogs 磁盤 onf lin bug 本篇文章雖不談架構,但是Cache又是架構中不可或缺的部分,因此,在講解Cache的同時,將會提及到部分架構知識,關於架構部分,讀者可以不用理解,或者直接跳過涉及架構部分的內容, 你只
redis在項目中的運用
all 鼠標 pivot 網絡 enc 監聽 code ogl 監聽端口 先引用百度百科的一段話吧,具體可以到百科查看吧。 Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。從2
C++在低延遲交易系統中的運用
C++11 C++ Linux 多線程 模板 C++在低延遲交易系統中的運用在金融衍生品市場中,做市商(Market Maker)肩負著為期權期貨產品報價(Quoting)的義務。“低延遲”對於這類公司而言至關重要,如果你的速度比別人快,同樣的報價就可以優先成交,錯誤報價可以快速撤回,還可
如何在Linux系統中熟練運用KILL命令,純幹貨!!!
sigsegv 忽略 特定 shell 不可 結束 幹貨 n+1 不發送 1.命令格式: kill[參數][進程號] 2.命令功能: 發送指定的信號到相應進程。不指定型號將發送SIGTERM(15)終止指定進程。如 果任無法終止該程序可用“-KILL” 參數,其發送的信號為
iOS開發多線程在實際項目中的運用
實現 tps 性能 url 異步 通信 ... class 多線程並發 實際項目開發中為了能夠給用戶更好的體驗,有些延時操作我們都會放在子線程中進行。 今天我們就來聊聊多線程在實際項目中的運用。 我們先來看看多線程的基礎知識: 1.多線程的原理: 同一時間,
Excel中靈活運用運算(乘)快速將文本格式批量改為數字格式
都是 fff oss blog ado 解決 ext term 數據類型 我們在使用excel過程中,在導入數據的時候,很多數據都是以文本形式存在的,可能不方便參與計算或設置數據類型,此時可以靈活運用excel運算(乘)快速將文本格式改為數字格式。【常見問題】如何把一列文本
IE8中select控制元件中的option顯示不全解決方案
select控制元件,若option的內容過長,則IE8中顯示不全,導致其內容無法顯示出來。 目前測試IE9、IE11 select控制元件都沒有問題。 其中select,可以只針對個別的select,只要替換相應的class即可。 解決方案:
CentOS SUID/SGID/SBIT許可權與其在專案協作中的運用
本文總結自鳥哥的linux私房菜 檔案與目錄管理篇:http://linux.vbird.org/linux_basic/0220filemanager.php 目錄 目錄 一、幾個特殊許可權
vue $emit子元件傳出多個引數,如何在父元件中在接收所有引數的同時新增自定義引數
前言 很多時候用$emit攜帶引數傳出事件,並且又需要在父元件中使用自定義引數時,這時我們就無法接受到子元件傳出的引數了。找到了兩種方法可以同時新增自定義引數的方法。 方法一 子元件傳出單個引數時: // 子元件 this.$emit('test',this.param) // 父元件 @test=
基於vue專案的元件中匯入mui框架初始化滑動等效果時需移除嚴格模式的問題
基於vue專案的元件中匯入mui框架初始化滑動等效果時,控制檯報錯:Uncaught TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the ar
分頁控制元件中的數字按鈕計算方法
計算思想: 以當前頁碼為標杆,使用卡尺的思想,左移,右移,再左移,最後得到起始、結束位置的按鈕頁碼。 @{ var param = new { Page = 18, //當前頁 NumberButton = 5,//數字按鈕的個數