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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

JavaFX UI控件教程(二十二)之Titled Pane和Accordion

發(fā)布時(shí)間:2023/12/3 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaFX UI控件教程(二十二)之Titled Pane和Accordion 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

翻譯自??Titled Pane and Accordion

本章介紹如何在JavaFX應(yīng)用程序中使用accordion和title窗格的組合。

標(biāo)題窗格是帶標(biāo)題的面板。它可以打開和關(guān)閉,它可以封裝任何Node諸如UI控件或圖像以及添加到布局容器的元素組。

標(biāo)題窗格可以使用手風(fēng)琴控件進(jìn)行分組,這使您可以創(chuàng)建多個(gè)窗格并一次顯示一個(gè)窗格。圖21-1顯示了一個(gè)結(jié)合了三個(gè)標(biāo)題窗格的手風(fēng)琴控件。

圖21-1帶有三個(gè)標(biāo)題的折疊窗格

使用JavaFX SDK API中的Accordion和TitledPane類在應(yīng)用程序中實(shí)現(xiàn)這些控件。

?

創(chuàng)建標(biāo)題窗格

創(chuàng)建TitledPane控件定義標(biāo)題和一些內(nèi)容。您可以通過使用類的雙參數(shù)構(gòu)造函數(shù)TitledPane或應(yīng)用setText和setContent方法來完成此操作。兩種方法都顯示在例21-1中。

例21-1聲明TitledPane對(duì)象

//using a two-parameter constructor TitledPane tp = new TitledPane("My Titled Pane", new Button("Button")); //applying methods TitledPane tp = new TitledPane(); tp.setText("My Titled Pane"); tp.setContent(new Button("Button"));

使用任一代碼片段編譯和運(yùn)行應(yīng)用程序?qū)⑸扇鐖D21-2所示的控件。

圖21-2帶按鈕的標(biāo)題窗格

標(biāo)題窗格的大小調(diào)整為適應(yīng)其內(nèi)容的首選大小。您可以添加多行文本并評(píng)估結(jié)果,如圖21-3所示。

圖21-3帶有一些文本的標(biāo)題窗格

不要顯式設(shè)置標(biāo)題窗格的最小高度,最大高度或首選高度,因?yàn)檫@可能會(huì)在打開或關(guān)閉標(biāo)題窗格時(shí)導(dǎo)致意外行為。

例21-2中顯示的代碼片段通過將幾個(gè)控件放入GridPane布局容器中,將幾個(gè)控件添加到標(biāo)題窗格中。

示例21-2帶有GridPane布局容器的標(biāo)題窗格

TitledPane gridTitlePane = new TitledPane(); GridPane grid = new GridPane(); grid.setVgap(4); grid.setPadding(new Insets(5, 5, 5, 5)); grid.add(new Label("First Name: "), 0, 0); grid.add(new TextField(), 1, 0); grid.add(new Label("Last Name: "), 0, 1); grid.add(new TextField(), 1, 1); grid.add(new Label("Email: "), 0, 2); grid.add(new TextField(), 1, 2); gridTitlePane.setText("Grid"); gridTitlePane.setContent(grid);

使用此代碼片段運(yùn)行和編譯應(yīng)用程序時(shí),將顯示如圖21-4所示的輸出。

圖21-4包含多個(gè)控件的標(biāo)題窗格

您可以定義標(biāo)題窗格的打開和關(guān)閉方式。默認(rèn)情況下,所有標(biāo)題窗格都是可折疊的,并且它們的移動(dòng)是動(dòng)畫的。如果您的應(yīng)用程序禁止關(guān)閉標(biāo)題窗格,請(qǐng)使用setCollapsible帶有false值的方法。您還可以通過應(yīng)用setAnimated帶有false值的方法來禁用動(dòng)畫打開。例21-3中顯示的代碼片段實(shí)現(xiàn)了這些任務(wù)。

例21-3調(diào)整標(biāo)題窗格的樣式

TitledPane tp = new TitledPane(); //prohibit closing tp.setCollapsible(false); //prohibit animating tp.setAnimated(false);

將標(biāo)題窗格添加到折疊中

在您的應(yīng)用程序中,您可以使用標(biāo)題窗格作為獨(dú)立元素,或者可以使用Accordion控件將它們組合在一個(gè)組中。不要明確設(shè)置手風(fēng)琴的最小,最大或首選高度,因?yàn)檫@可能會(huì)在打開其標(biāo)題窗格之一時(shí)導(dǎo)致意外行為。

向手風(fēng)琴添加幾個(gè)標(biāo)題窗格類似于向切換組添加切換按鈕:一次只能在手風(fēng)琴中打開一個(gè)標(biāo)題窗格。例21-4創(chuàng)建了三個(gè)標(biāo)題窗格并將它們添加到手風(fēng)琴中。

例21-4折疊和三個(gè)標(biāo)題窗格

import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Accordion; import javafx.scene.control.TitledPane; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.paint.Color; import javafx.stage.Stage;public class TitledPaneSample extends Application {final String[] imageNames = new String[]{"Apples", "Flowers", "Leaves"};final Image[] images = new Image[imageNames.length];final ImageView[] pics = new ImageView[imageNames.length];final TitledPane[] tps = new TitledPane[imageNames.length];public static void main(String[] args) {launch(args);}@Override public void start(Stage stage) {stage.setTitle("TitledPane");Scene scene = new Scene(new Group(), 80, 180);scene.setFill(Color.GHOSTWHITE);final Accordion accordion = new Accordion (); for (int i = 0; i < imageNames.length; i++) { images[i] = new Image(getClass().getResourceAsStream(imageNames[i] + ".jpg"));pics[i] = new ImageView(images[i]);tps[i] = new TitledPane(imageNames[i],pics[i]); } accordion.getPanes().addAll(tps);accordion.setExpandedPane(tps[0]);Group root = (Group)scene.getRoot();root.getChildren().add(accordion);stage.setScene(scene);stage.show();} }

在循環(huán)內(nèi)創(chuàng)建三個(gè)標(biāo)題窗格。每個(gè)標(biāo)題窗格的內(nèi)容都定義為一個(gè)ImageView對(duì)象。通過使用getPanes和addAll方法將標(biāo)題窗格添加到手風(fēng)琴中。您可以使用該add方法而不是addAll方法添加單個(gè)標(biāo)題窗格。

默認(rèn)情況下,應(yīng)用程序啟動(dòng)時(shí)會(huì)關(guān)閉所有標(biāo)題窗格。例21-4中的setExpandedPane方法指定在運(yùn)行樣本時(shí)將打開帶有蘋果圖片的標(biāo)題窗格,如圖21-5所示。

圖21-5帶有三個(gè)標(biāo)題窗格的折疊

?

處理具有標(biāo)題窗格的折疊的事件

您可以使用標(biāo)題窗格和折疊在應(yīng)用程序中顯示不同的數(shù)據(jù)。例21-5創(chuàng)建了一個(gè)獨(dú)立的標(biāo)題窗格,其中GridPane包含布局容器和使用折疊組合的三個(gè)標(biāo)題窗格。獨(dú)立標(biāo)題窗格包含電子郵件客戶端的UI元素。折疊使圖像的選擇能夠出現(xiàn)在Grid標(biāo)題窗格的Attachment字段中。

例21-5為Accordion實(shí)現(xiàn)ChangeListener

import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.geometry.Insets; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Accordion; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.control.TitledPane; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.paint.Color; import javafx.stage.Stage;public class TitledPaneSample extends Application {final String[] imageNames = new String[]{"Apples", "Flowers", "Leaves"};final Image[] images = new Image[imageNames.length];final ImageView[] pics = new ImageView[imageNames.length];final TitledPane[] tps = new TitledPane[imageNames.length];final Label label = new Label("N/A");public static void main(String[] args) {launch(args);}@Override public void start(Stage stage) {stage.setTitle("TitledPane");Scene scene = new Scene(new Group(), 800, 250);scene.setFill(Color.GHOSTWHITE);// --- GridPane containerTitledPane gridTitlePane = new TitledPane();GridPane grid = new GridPane();grid.setVgap(4);grid.setPadding(new Insets(5, 5, 5, 5));grid.add(new Label("To: "), 0, 0);grid.add(new TextField(), 1, 0);grid.add(new Label("Cc: "), 0, 1);grid.add(new TextField(), 1, 1);grid.add(new Label("Subject: "), 0, 2);grid.add(new TextField(), 1, 2); grid.add(new Label("Attachment: "), 0, 3);grid.add(label,1, 3);gridTitlePane.setText("Grid");gridTitlePane.setContent(grid);// --- Accordionfinal Accordion accordion = new Accordion (); for (int i = 0; i < imageNames.length; i++) {images[i] = new Image(getClass().getResourceAsStream(imageNames[i] + ".jpg"));pics[i] = new ImageView(images[i]);tps[i] = new TitledPane(imageNames[i],pics[i]); } accordion.getPanes().addAll(tps); accordion.expandedPaneProperty().addListener(new ChangeListener<TitledPane>() {public void changed(ObservableValue<? extends TitledPane> ov,TitledPane old_val, TitledPane new_val) {if (new_val != null) {label.setText(accordion.getExpandedPane().getText() + ".jpg");}}});HBox hbox = new HBox(10);hbox.setPadding(new Insets(20, 0, 0, 20));hbox.getChildren().setAll(gridTitlePane, accordion);Group root = (Group)scene.getRoot();root.getChildren().add(hbox);stage.setScene(scene);stage.show();} }

當(dāng)用戶在折疊中打開標(biāo)題窗格時(shí),expandedPaneProperty折疊會(huì)改變。將ChangeListener通知對(duì)象此更改,并且折疊中的擴(kuò)展標(biāo)題窗格用于構(gòu)造附件的文件名。此文件名設(shè)置為相應(yīng)Label對(duì)象的文本。

圖21-6顯示了應(yīng)用程序啟動(dòng)后的外觀。附件標(biāo)簽包含“N / A”,因?yàn)闆]有選擇標(biāo)題窗格。

圖21-6 TitledPaneSample應(yīng)用程序的初始視圖

如果展開Leaves標(biāo)題窗格,Attachment標(biāo)簽將包含“Leaves.jpg”,如圖21-7所示。

圖21-7帶葉子標(biāo)題窗格的TitledPaneSample應(yīng)用程序擴(kuò)展

因?yàn)門itledPane和Accordion類都是類的擴(kuò)展,所以Node可以對(duì)它們應(yīng)用視覺效果或轉(zhuǎn)換。您還可以通過應(yīng)用CSS樣式來更改控件的外觀。

?

相關(guān)的API文檔?

  • TitledPane

  • Accordion

  • Label

  • GridPane

  • TextField

總結(jié)

以上是生活随笔為你收集整理的JavaFX UI控件教程(二十二)之Titled Pane和Accordion的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色片网站在线观看 | 琪琪色在线观看 | 国产精品女人精品久久久天天 | 伊人久久大 | 丰满少妇久久久久久久 | 一区二区av| 艳妇av | 日产精品久久久久久久蜜臀 | 91视频免费网址 | 人人av在线 | 国产成人综合av | 精品国产一二区 | 啊灬啊灬啊灬秀婷 | 游戏涩涩免费网站 | 91一区 | 欧美少妇毛茸茸 | 国产三级精品在线观看 | 亚洲国产精品成人无码区 | 东京久久| 手机看片日韩福利 | 51啪影院 | 亚洲4区 | 亚洲精品无码久久久 | 亚洲第一免费 | 亚洲视频二 | 99久久精品免费看国产四区 | 成人午夜免费视频 | 欧美一级片在线视频 | 老司机午夜免费福利 | 国产一区中文 | 色视av| 色婷婷aⅴ一区二区三区 | 国产精品中文字幕在线观看 | 婷婷看片| 亚洲视频免费看 | 特黄一级视频 | 久久精品免费av | 色欧美综合 | 纯爱无遮挡h肉动漫在线播放 | 亚洲一区二区小说 | 日日夜夜国产精品 | 欧美一级一级一级 | 成人在线观看av | 午夜少妇影院 | 中国毛片网站 | 91精品导航 | 不卡日本视频 | 开心黄色网 | 国产黄a三级三级三级 | 在线免费观看污 | 国产成人午夜视频 | 国产精品少妇 | 99热欧美| 97在线播放免费观看 | 国内精品视频在线 | 国产福利免费观看 | 日本久久精品视频 | 美景之屋电影免费高清完整韩剧 | 综合99| 午夜精品久久久久久久久久蜜桃 | 麻豆传媒网页 | 国产三级精品在线 | 久久精品国产精品亚洲毛片 | 亚洲黄一区 | 亚洲s码欧洲m码国产av | 欧美黑人啪啪 | 日本激情在线 | 四级毛片 | 成人在线观看h | 天海翼视频在线观看 | 国产真实的和子乱拍在线观看 | 国产精欧美一区二区三区白种人 | 日本少妇xxx| 久久久久久久免费 | 日韩一区精品 | 国产三级漂亮女教师 | 亚洲无吗av | 欧美精品导航 | 男女av网站 | 粉嫩小箩莉奶水四溅在线观看 | 欧美日韩不卡一区二区 | 欧美tv| 久久777| www.日韩精品 | 最污的网站| 国产一区 在线播放 | 成人免费网站 | 玉足调教丨vk24分钟 | 三级视频在线 | 国产成人精品视频一区二区 | 国内9l自拍 | 久久久久久无码精品人妻一区二区 | 67194国产| 极品在线播放 | 日本一区二区在线播放 | 黄av资源 | 麻豆成人精品 | 亚洲av综合色区无码二区爱av | 国产精品国语自产拍在线观看 |