郭強
摘要:JavaFX作為替代了Swing作為Java語言進行圖形界面開發的新工具,正在得到越來越多的開發者的支持[1]。而作為一種新的界面開發工具,相關教材上對于其具體應用并不詳盡,尤其是對一些復雜的組件的介紹,如在這里要介紹的列表視圖組件TableView,作為一個功能強大的組件,它的使用還存在著許多需要普及和重視的方面,在這里對TableView的功能進行挖掘。
關鍵詞:JavaFX;TableView;組件
中圖分類號:TP393.09 文獻標識碼:A 文章編號:1007-9416(2018)01-0106-01
雖然JavaFX已經得到Oracle公司和相關組織的全力支持,但由于Swing存在的時間長,已經得到了廣大開發者的認可,很多開發者對JavaFX的理解并不深刻[2]。而TableView作為JavaFX中的一個常用的組件,常常用來進行數據條目的顯示和操作,其功能非常強大,定義了繁多的API幫助開發者實現對數據的不同操作,而且自身還具有排序、多重排序等功能。因此能夠深入的理解TableView的使用將會為程序設計開發帶來非常大的便利,關于TableView的使用使這里要介紹的內容
1 TableView結構
TableView以表格的形式顯示和加載數據,所以像表格一樣,一個TableView對象需要定義它的列,因此TableView經常需要和TableColumn、TableCell對象進行組合使用,分別來指定表格的列和數據單元。
1.1 TableView
TableView用以對數據進行表格形式的顯示。JavxFX在定義時賦予了排序,調整列寬的功能,而TableView的數據來源可以是從數據庫中讀取的數據集進行加載得到,也可以從開發者定義的ObservableList對象中獲取。但是終究是要從ObservableList對象中得到數據,所以ObservableList對象成為了數據的來源。TableView對象通過setItems(ObservableLis
1.2 數據模型
數據模型提供了TableView數據源的模型,即數據的表現形式,在JavaFX中通過定義類來表述數據模型,類中的數據屬性對應了數據源的列名,并需要對所有的屬性提供public所修飾的set和get方法嗎,而且在這里需要對方法名提出嚴格的要求,需要是setXxx或getXxx的形式,如對于name屬性,需要提供setName和getName方法。而在定義ObservableList對象的數據類型時,需要與數據模型的類型保持一致。
1.3 TableColumn
TableColumn定義了數據顯示在TableView中的列名,所以需要讓TableColumn與數據模型建立聯系,讓TableColumn中的每一個列對應數據模型的一個屬性。
userNameTCloumn = new TableColumn<>( “用戶名” );
userNameTCloumn.setCellValueFactory( new PropertyValueFactory
在這里TableColumn對象userNameTCloumn定義為一個名為”用戶名”的列,通過.setCellValueFactory方法與數據模型userInfo的userName建立了聯系。
最后通過TableView的getColumns().addAll(TableColumn)方法將TableColumn添加到TableView視圖中。
1.4 TableCell
TableCell作為TableView中的一個數據單元而存在,常常用來加載非數據的內容,例如加載一個超鏈接、按鈕或者一張圖片,可以強化TableView的功能。
2 重寫方法,豐富TableView功能
上面我們已經提到可以通過使用TableCell來強化視圖的功能,那么就需要重寫相關方法來實現。在這里以顯示超鏈接為列子來說明。
想要在列表視圖TableView中的數據單元格中顯示一個超鏈接,那么首先要操作超鏈接所對應的TableColumn對象。
TableColumn對象通過調用setCellFactory方法,重寫Callback
首先定義一個HyperlinkTableCell對象,用于承載一個超鏈接組件,通過.getGraphic()方法得到一個超鏈接對象,在這里需要使用強制類型轉換,在超鏈接對象上添加事件響應,通過setOnAction方法,定義點擊超鏈接時發生的事件響應,實現界面的跳轉。
程序的運行結果如圖1所示。
可以看到數據表格中”查看”列是以一個超鏈接的形式進行顯示,這個TableColumn對象是被重寫的對象。除此之外還可以通過類似的方式實現表格數據編輯、刪除等功能。
3 結語
JavaFX是一個具有光明未來的界面開發工具,它的用途不僅局限于APP,在互聯網,移動開發上也具有強大的功能,對于它的學習還需要更加深入,而本文的TableView作為其中一個相對復雜強大的組件應用也顯得非常重要,它的用途也會被人們所重視。
參考文獻
[1]黃雁.JavaFX技術初探[J].電腦知識與技術,2010,06(15):3978-3979.
[2]蔡學鏞.JavaFX精粹[J].程序員,2007,(11):111-113.