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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java treetable_在Swing中创建TreeTable | 学步园

發布時間:2025/3/8 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java treetable_在Swing中创建TreeTable | 学步园 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TreeTable是Tree和Table的一個結合-

就是一個即能夠展開和收起行,同時也能夠顯示多個列的組件。在Swing的標準包里沒有一個叫做JtreeTable的組件,但是我們很容易通過把Jtree做成Jtable的渲染器來創建一個這樣的組件。

這篇文章就是關于如何使用該技術來創建一個TreeTable。最后實現一個名為TreeTableExample0的例子程序,該例子實現了一個TreeTable的瀏覽器,可以用來瀏覽本機的文件系統(如下圖所示)

在Swing中,Jtree,Jtable,Jlist和JcomboBox組件都是使用一個叫做單元格渲染器(Cell Render)的指定對象來畫內容。單元格渲染器的paint()方法來畫list中的每一項,tree中的每個節點,table中的每個單元格。單元格渲染器就象一個“印章(rubber

stamp)”,它會移動到setBounds()方法指定的位置,然后用paint()方法來畫。

通過使用組件來渲染單元格,你可以僅創建一個組件來高效地顯示大量的相同組件。缺省的,Swing組件使用支持簡單的文本和圖標組合(Text和Icon)的Jlabel來做單元格的渲染器。要使用任何的Swing組件做單元格渲染器,只需創建一個實現了相應的單元格渲染器接口的子類。如:Jtable的TableCellRenderer接口,Jlist的ListCellRenderer接口,等等。

Swing中的渲染

下面是一個如何在JTable中使用JcheckBox作為渲染器的例子

public class CheckBoxRenderer extends JCheckBox

implements TableCellRenderer {

public Component getTableCellRendererComponent(JTable table,

Object value, boolean isSelected,

boolean hasFocus, int row, int column) {

setSelected(((Boolean)value).booleanValue()));

return this;

}

}

來看看下面例子是如何工作的

下面的代碼段是本文后面介紹的例子中的一個片斷 ,演示了如何用JTree來渲染JTable的內部。這個例子稍微有點兒不尋常,是因為它把JTree的每單個節點畫到JTable的每單個單元格,而不是把整個樹畫到每個JTable的單元格

我們使用通常的方法開始:通過擴展Jtree類和實現TableCellRenderer接口把Jtree展開到單元格渲染器。為了實現一個單元格渲染器所需的行為,我們必須讓我們的渲染器僅把樹的節點畫在一個特定的表單元格中。 實現這些的一個簡單方法就是重寫setBounds()方法和paint()方法,如下:

public class TreeTableCellRenderer extends JTree

implements TableCellRenderer {

protected int visibleRow;

public void setBounds(int x, int y, int w, int h) {

super.setBounds(x, 0, w, table.getHeight());

}

public void paint(Graphics g) {

g.translate(0, -visibleRow * getRowHeight());

super.paint(g);

}

public Component getTableCellRendererComponent(JTable table,

object value,

boolean isSelected,

boolean hasFocus,

int row, int column) {

visibleRow = row;

return this;

}

}

當每個單元格繪制好以后,JTable進行正常的渲染過程,設置其邊界,請求繪制。然而在本例中,我們使用一個實例變量visibleRow來記錄當前繪制的單元格的行號。同時我們重寫了setBounds(),因此即使當JTable根據當前繪制的單元格的尺寸來設定自己的邊界的時候,Jtree也能和JTable保持同意的高度。

為了完成該功能,我們還要重寫paint(), 使用已經存儲的變量visibleRow,把剪輯矩形區域移動到tree的相應部分的上方。結果是當table要求繪制的時候,Jtree 僅繪制它的其中一個節點。

除了把Jtree做成單元格第一列的渲染器,我們還把Jtree作為這些單元個的編輯器。這種作法的效果是JTable傳遞所有的鼠標和鍵盤事件給這個“編輯器” - 也就允許tree接受用戶輸入來展開和收縮它的節點。

例子:一個文件系統瀏覽器

文中的例子創建了一個文件系統瀏覽器,每個目錄可以展開和收起,表中的其它列顯示文件和目錄的重要屬性,如文件大小和日期等

下面是例子中的類文件列表,及其用途描述:

TreeTableModel.java: 新接口,擴展了TreeModel接口,描述TreeTable中要顯示那些數據

AbstractTreeTableModel.java: TreeTableModel的基類,該類處理一些監聽器。

TreeTableModelAdapter.java:? 實現了TreeModel接口的包裝類,輸入參數為TreeTableModel和Jtree

AbstractCellEditor.java:? CellEditors的基類,該類處理一些監聽器。

JTreeTable.java: JTable的子類,該類可以從TreeTableModel中渲染數據

MergeSort.java:? 一個合并排序的實現

FileSystemModel.java: 本機文件系統的模型,AbstractTreeTableModel的實子類,實現了TreeTableModel接口

TreeTableExample0.java:

顯示TreeTable的示例程序。

sources.zip:

包含上述文件的壓縮文件,當你運行程序TreeTableExample0, 顯示一個本地文件系統中文件和目錄的TreeTable。就像文章開始部分顯示的圖片。 點擊表的第一列中的支元素,項目就會象其它樹一樣的展開和收縮。

總結

以上是生活随笔為你收集整理的java treetable_在Swing中创建TreeTable | 学步园的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精精国产| julia一区 | a一级免费视频 | japanese24hdxxxx日韩 | 欧美视频一二区 | 国产女人在线 | 久月婷婷 | 精品一区二区三区在线观看 | 亚洲精品人人 | 国产乱国产乱300精品 | 骚视频在线观看 | 国产黄网在线观看 | 快灬快灬一下爽69 | 九九精品久久 | 亚洲欧美视频一区二区 | 国产欧美精品一区二区三区app | 韩国三级视频在线观看 | 欧美脚交 | 久久99影院 | 91大神小宝寻花在线观看 | 国产精品国产精品国产专区不片 | 亚洲一区二区三区电影在线观看 | 人人看av| 久久久毛片 | 91日韩中文字幕 | 亚洲不卡中文字幕无码 | 亚洲iv一区二区三区 | 亚洲色图在线视频 | 国产成人精品123区免费视频 | 国产性猛交xx乱 | 无码人妻精品丰满熟人区 | 欧美××××黑人××性爽 | 91久久精品国产 | 在线观看的黄色网址 | 91制服诱惑| 一区二区精 | 朋友人妻少妇精品系列 | 4438五月天 | 草色噜噜噜av在线观看香蕉 | 欧美一区在线观看视频 | chien国产乱露脸对白 | 外国毛片| 在线色资源 | 国产欧美日韩综合 | 麻豆一区二区99久久久久 | 久操久操 | 粉嫩av一区二区三区免费观看 | 亚洲老老头同性老头交j | 午夜黄色在线 | 97香蕉久久夜色精品国产 | 丰满秘书被猛烈进入高清播放在 | 免费的毛片| 一区二区视频在线观看 | 91国在线啪| 亚洲蜜桃在线 | 深夜免费视频 | 亚洲视频456 | 九九精品在线观看视频 | 97se综合| 国产视频网 | 欧美在线a | 91精品国产91久久久久青草 | 一级看片 | 免费人成视频在线播放 | 三年中文在线观看中文版 | 亚洲 在线 | 国产精品99久久久久久一二区 | 色戒电影未测减除版 | 免费看国产精品 | 成人一级影片 | 蜜臀久久99精品久久久久宅男 | 午夜秋霞 | 激情aaa| 久久久久99人妻一区二区三区 | 波多野结衣影片 | 91香蕉视频在线 | 国产精品第6页 | yy色综合| 怎么可能高潮了就结束漫画 | juliaann精品艳妇hd | 国产99视频在线观看 | 巨乳xxx | 亚洲高清视频一区二区 | 天堂网视频在线观看 | 少妇高潮露脸国语对白 | 久久国产色av免费观看 | 在线观看日本一区二区 | 国产在线视频网站 | 曰批免费视频播放免费 | 国产日韩欧美日韩大片 | 久久av高潮av无码av喷吹 | 久操成人 | 日韩欧美极品 | 欧洲激情网 | 一区二区三区免费高清视频 | 雪花飘电影在线观看免费高清 | 在线观看国产一区二区 | 午夜精品福利在线观看 | 久久精品视频7 |