欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

使用JTable創(chuàng)建Java表的方法

使用JTable創(chuàng)建Java表的方法?這個(gè)問(wèn)題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見(jiàn)到的。希望通過(guò)這個(gè)問(wèn)題能讓你收獲頗深。下面是小編給大家?guī)?lái)的參考內(nèi)容,讓我們一起來(lái)看看吧!

創(chuàng)新互聯(lián)公司是一家專業(yè)提供和碩企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站H5頁(yè)面制作、小程序制作等業(yè)務(wù)。10年已為和碩眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。

Java  提供了一個(gè)名為JTable的有用類,使您可以在使用Java的Swing API組件開(kāi)發(fā)圖形用戶界面時(shí)創(chuàng)建表。您可以讓用戶編輯數(shù)據(jù)或只查看數(shù)據(jù)。請(qǐng)注意,該表實(shí)際上并不包含數(shù)據(jù) - 它完全是一種顯示機(jī)制。

使用JTable創(chuàng)建Java表的方法

注意:  與任何Swing GUI一樣,您需要?jiǎng)?chuàng)建一個(gè)容器來(lái)顯示  JTable 。

使用數(shù)組存儲(chǔ)表數(shù)據(jù)

為JTable類提供數(shù)據(jù)的一種簡(jiǎn)單方法是使用兩個(gè)數(shù)組。第一個(gè)將列名保存在String數(shù)組中:

String[] columnNames = {"First Name", "Surname", "Country"
, "Event", "Place", "Time", "World Record" };

第二個(gè)數(shù)組是一個(gè)二維對(duì)象數(shù)組,用于保存表的數(shù)據(jù)。例如,這個(gè)陣列包括六名奧林匹克游泳運(yùn)動(dòng)員:

Object[][] data = {
{"César Cielo", "Filho", "Brazil", "50m freestyle",1 , "21.30", false },
{"Amaury", "Leveaux", "France", "50m freestyle", 2, "21.45", false },
{"Eamon", "Sullivan", "Australia", "100m freestyle", 2, "47.32", false },
{"Michael", "Phelps", "USA", "200m freestyle", 1, "1:42.96", false },
{"Ryan", "Lochte", "USA", "200m backstroke", 1, "1:53.94", true },
{"Hugues", "Duboscq", "France", "100m breaststroke", 3, "59.37", false }
};

這里的關(guān)鍵是確保兩個(gè)數(shù)組具有相同的列數(shù)。

構(gòu)建JTable

一旦掌握了數(shù)據(jù),創(chuàng)建表就是一項(xiàng)簡(jiǎn)單的任務(wù)。只需調(diào)用JTable 構(gòu)造函數(shù)并將其傳遞給兩個(gè)數(shù)組:

JTable table = new JTable(data, columnNames);

您可能希望添加滾動(dòng)條以確保用戶可以看到所有數(shù)據(jù)。為此,請(qǐng)將其JTable放入JScrollPane:

JScrollPane tableScrollPane = new JScrollPane(table);

現(xiàn)在,當(dāng)顯示表格時(shí),您將看到數(shù)據(jù)的列和行,并且可以向上和向下滾動(dòng)。

JTable對(duì)象提供了一個(gè)交互式表。如果雙擊任何單元格,您將能夠編輯內(nèi)容 - 盡管任何編輯僅影響GUI,而不影響基礎(chǔ)數(shù)據(jù)。(需要實(shí)現(xiàn)事件監(jiān)聽(tīng)器來(lái)處理數(shù)據(jù)的更改。)。

要更改列的寬度,請(qǐng)將鼠標(biāo)懸停在列標(biāo)題的邊緣上,然后前后拖動(dòng)它。要更改列的順序,請(qǐng)單擊并按住列標(biāo)題,然后將其拖動(dòng)到新位置。

對(duì)列進(jìn)行排序

要添加對(duì)行進(jìn)行排序的功能,請(qǐng)調(diào)用setAutoCreateRowSorter方法:

table.setAutoCreateRowSorter(true);

當(dāng)此方法設(shè)置為true時(shí),您可以單擊列標(biāo)題以根據(jù)該列下單元格的內(nèi)容對(duì)行進(jìn)行排序。

改變表的外觀

要控制網(wǎng)格線的可見(jiàn)性,請(qǐng)使用以下setShowGrid方法:

table.setShowGrid(true);

要完全更改表的顏色,請(qǐng)使用setBackground和setGridColor方法:

table.setGridColor(Color.YELLOW);
table.setBackground(Color.CYAN);

默認(rèn)情況下,表的列寬相等。如果表所在的容器具有可調(diào)整大小,則列的寬度將擴(kuò)大和縮小,容器會(huì)變大或變小。如果用戶調(diào)整列的大小,則右側(cè)列的寬度將更改以適應(yīng)新的列大小。

可以使用setPreferredWidth方法或列設(shè)置初始列寬。使用TableColumn類首先獲取對(duì)列的引用,然后使用setPreferredWidth方法設(shè)置大?。?/p>

TableColumn eventColumn = table.getColumnModel().getColumn(3);
eventColumn.setPreferredWidth(150);
TableColumn placeColumn = table.getColumnModel().getColumn(4);
placeColumn.setPreferredWidth(5);

選擇行

默認(rèn)情況下,用戶可以通過(guò)以下三種方式之一選擇表的行:

要選擇單行,請(qǐng)單擊該行中的表格單元格。

要選擇連續(xù)的多行,請(qǐng)將鼠標(biāo)拖到多行上,或者單擊按下了移位單元格的表格單元格。

要選擇非連續(xù)的多行,請(qǐng)?jiān)诎醋】刂奇I(Mac的命令鍵)的同時(shí)單擊表格單元格。

使用表模型

如果你想要一個(gè)可以編輯的簡(jiǎn)單的基于字符串的表,那么使用幾個(gè)數(shù)組作為表的數(shù)據(jù)會(huì)很有用。如果查看我們創(chuàng)建的數(shù)據(jù)數(shù)組,它包含的其他數(shù)據(jù)類型Strings- Place列包含ints且World Record列包含booleans。然而,這兩列都顯示為字符串。要更改此行為,請(qǐng)創(chuàng)建表模型。

表模型管理要在表中顯示的數(shù)據(jù)。要實(shí)現(xiàn)表模型,可以創(chuàng)建一個(gè)擴(kuò)展AbstractTableModel該類的類:

public abstract class AbstractTableModel extends Object implements TableModel, Serializable{
public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int column);
public String getColumnName(int column;
public boolean isCellEditable(int rowIndex, int columnIndex);
public Class getColumnClass(int columnIndex);
}

上面的六種方法是本分步指南中使用的方法,但是AbstractTableModel該類定義的更多方法可用于操作JTable對(duì)象中的數(shù)據(jù)。當(dāng)擴(kuò)展一個(gè)類來(lái)使用AbstractTableModel, ,你只需要在實(shí)施getRowCount,getColumnCount和getValueAt方法。

創(chuàng)建一個(gè)實(shí)現(xiàn)上述五種方法的新類:

class ExampleTableModel extends AbstractTableModel{
String[] columnNames = {"First Name", "Surname", "Country"
, "Event", "Place", "Time", "World Record" };
Object[][] data = {
{"César Cielo", "Filho", "Brazil", "50m freestyle",1 , "21.30", false },
{"Amaury", "Leveaux", "France", "50m freestyle", 2, "21.45", false },
{"Eamon", "Sullivan", "Australia", "100m freestyle", 2, "47.32", false },
{"Michael", "Phelps", "USA", "200m freestyle", 1, "1:42.96", false },
{"Larsen", "Jensen", "USA", "400m freestyle", 3, "3:42.78", false },
};
@Override
public int getRowCount()
{
return data.length;
}
@Override
public int getColumnCount()
{
return columnNames.length;
}
@Override
public Object getValueAt(int row, int column)
{
return data[row][column];
}
@Override
public String getColumnName(int column) {
return columnNames[column];
}@Override
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}@Override
public boolean isCellEditable(int row, int column)
{
if (column == 1 || column == 2)
{
return false;
}
else
{
return true;
}
}
}

在這個(gè)例子中,ExampleTableModel類保持包含表數(shù)據(jù)的兩個(gè)字符串是有意義的。然后,getRowCount, getColumnCount,getValueAt和getColumnName方法可以使用陣列來(lái)為表提供的值。另外,請(qǐng)注意如何isCellEditable編寫(xiě)該方法以禁止編輯前兩列。

現(xiàn)在,JTable我們可以使用以下ExampleTableModel類來(lái)代替使用兩個(gè)數(shù)組來(lái)創(chuàng)建對(duì)象:

JTable table = new JTable(new ExampleTableModel());

代碼運(yùn)行時(shí),您將看到JTable對(duì)象正在使用表模型,因?yàn)闆](méi)有表單元格可編輯,并且正確使用了列名稱。如果getColumnName方法尚未實(shí)現(xiàn),則表上的列名將顯示為A,B,C,D等的默認(rèn)名稱。

我們現(xiàn)在考慮一下該方法  getColumnClass。僅這一點(diǎn)使得表模型值得實(shí)現(xiàn),因?yàn)樗鼮镴Table對(duì)象提供了每列中包含的數(shù)據(jù)類型。如果您還記得,對(duì)象數(shù)據(jù)數(shù)組有兩列不是String數(shù)據(jù)類型:Place包含int的World Record列和包含的列booleans。了解這些數(shù)據(jù)類型會(huì)更改JTable對(duì)象為這些列提供的功能。運(yùn)行帶有表模型的示例表代碼意味著該World Record列實(shí)際上將是一系列復(fù)選框。

添加ComboBox編輯器

您可以為表中的單元格定義自定義編輯器。例如,您可以使組合框替換字段的標(biāo)準(zhǔn)文本編輯。

以下是使用JComboBoxcountry字段的示例  :

String[] countries = {"Australia", "Brazil", "Canada", "China"
,"France", "Japan", "Norway", "Russia", "South Korea"
, "Tunisia", "USA"};
JComboBox countryCombo = new JComboBox(countries);

要設(shè)置country列的默認(rèn)編輯器,請(qǐng)使用TableColumn該類獲取對(duì)country列的引用,并使用該setCellEditor方法將該列設(shè)置JComboBox為單元格編輯器:

TableColumn countryColumn = table.getColumnModel().getColumn(2);
countryColumn.setCellEditor(new DefaultCellEditor(countryCombo));

感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)使用JTable創(chuàng)建Java表的方法大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

新聞標(biāo)題:使用JTable創(chuàng)建Java表的方法
網(wǎng)頁(yè)網(wǎng)址:http://aaarwkj.com/article42/ihpghc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)靜態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、企業(yè)建站、軟件開(kāi)發(fā)、定制開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)
久久国产福利一区二区| 国产又粗又猛又爽黄老大爷 | 国产精品亚洲二区三区三州| 精品久久亚洲一区二区欧美| 白嫩少妇情久久密月久久| 台湾三级一区二区三区| 国内丰满少妇嗷嗷叫在线播放| 亚洲精品熟女国产国产老熟女| 欧美激情韩国三级日本| av免费在线观看网页| jvid视频在线观看免费| 欧美日韩美足一区二区| 一区二区三区高清人妻日本| 日韩欧美国产精品自拍| 在线免费观看国产不卡| 天堂av中文字幕在线不卡| 美女丝袜诱惑国产在线观看| 91精品国产高清一区二区性色| 久久色综合色悠悠色综合色| 男人一插就想射的原因| 91精品中综合久久久久| 亚洲一区二区日韩综合久久| 丰满人妻视频一二三区| 日本一区二区高清网址| 在线播放精品免费不卡| 亚洲精品aa片在线观看国产| 黄色黄色片黄色片黄色| 97精品免费在线观看| 免费搜索国产男女视频| 国产女主播在线观看一区| 内射性感黑丝少妇av| 国产成年人在线免费观看| 97热久久精品中文字幕一区| 高清日本一区二区三区不卡片| 二区三区成人在线观看| 亚洲精品国产中文字幕| 欧亚日韩精品一区二区在线| 欧美日韩精品乱码在线观看| 欧美黄色日本一区二区| 日韩毛片中文字幕在线观看| 东京热男人的天堂色狠爱|