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

歡迎訪問 生活随笔!

生活随笔

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

java

JavaFX UI控件教程(二十七)之File Chooser

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

翻譯自??File Chooser

本章介紹如何使用FileChooser該類使用戶能夠?qū)Ш轿募到y(tǒng)。本章提供的示例說明了如何打開一個或多個文件,配置文件選擇器對話框窗口以及保存應(yīng)用程序內(nèi)容。

與其他用戶界面組件類不同,FileChooser該類不屬于該javafx.scene.controls包。但是,這個類值得在JavaFX UI Controls教程中提及,因?yàn)樗С值湫偷腉UI應(yīng)用程序功能之一:文件系統(tǒng)導(dǎo)航。

的FileChooser類位于javafx.stage包與其他的基本根圖形元素,例如沿著Stage,Window,和Popup。圖26-1中的“查看圖片”窗口是Windows中文件選擇器對話框的示例。

圖26-1文件選擇器窗口示例

?

打開文件

文件選擇器可用于調(diào)用打開的對話框窗口,用于選擇單個文件或多個文件,以及啟用文件保存對話框窗口。要顯示文件選擇器,通常使用FileChooser該類。例26-1提供了在應(yīng)用程序中啟用文件選擇器的最簡單方法。

示例26-1顯示文件選擇器

FileChooser fileChooser = new FileChooser(); fileChooser.setTitle("Open Resource File"); fileChooser.showOpenDialog(stage);

將示例26-1中的代碼添加到JavaFX應(yīng)用程序后,應(yīng)用程序啟動時會立即顯示文件選擇器對話框窗口,如圖26-2所示。

圖26-2簡單文件選擇器

注意:

圖26-2顯示了Windows中的文件選擇器。在其他支持此功能的操作系統(tǒng)中打開文件選擇器時,您將收到備用窗口。圖26-3和圖26-4顯示了Linux和Mac OS中文件選擇器窗口的示例。


圖26-3 Linux中的文件選擇器窗口

圖26-4 Mac OS中的“文件選擇器”窗口

雖然在前面的示例中,文件選擇器在應(yīng)用程序啟動時自動出現(xiàn),但更典型的方法是通過選擇相應(yīng)的菜單項(xiàng)或單擊專用按鈕來調(diào)用文件選擇器。在本教程中,您將創(chuàng)建一個應(yīng)用程序,使用戶可以單擊按鈕并打開位于文件系統(tǒng)中的一個或多個圖片。例26-2顯示了實(shí)現(xiàn)此任務(wù)的FileChooserSample應(yīng)用程序的代碼。

示例26-2打開單個和多個選擇的文件選擇器

import java.awt.Desktop; import java.io.File; import java.io.IOException; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.GridPane; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.stage.FileChooser; import javafx.stage.Stage;public final class FileChooserSample extends Application {private Desktop desktop = Desktop.getDesktop();@Overridepublic void start(final Stage stage) {stage.setTitle("File Chooser Sample");final FileChooser fileChooser = new FileChooser();final Button openButton = new Button("Open a Picture...");final Button openMultipleButton = new Button("Open Pictures...");openButton.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(final ActionEvent e) {File file = fileChooser.showOpenDialog(stage);if (file != null) {openFile(file);}}});openMultipleButton.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(final ActionEvent e) {List<File> list =fileChooser.showOpenMultipleDialog(stage);if (list != null) {for (File file : list) {openFile(file);}}}});final GridPane inputGridPane = new GridPane();GridPane.setConstraints(openButton, 0, 0);GridPane.setConstraints(openMultipleButton, 1, 0);inputGridPane.setHgap(6);inputGridPane.setVgap(6);inputGridPane.getChildren().addAll(openButton, openMultipleButton);final Pane rootGroup = new VBox(12);rootGroup.getChildren().addAll(inputGridPane);rootGroup.setPadding(new Insets(12, 12, 12, 12));stage.setScene(new Scene(rootGroup));stage.show();}public static void main(String[] args) {Application.launch(args);}private void openFile(File file) {try {desktop.open(file);} catch (IOException ex) {Logger.getLogger(FileChooserSample.class.getName()).log(Level.SEVERE, null, ex);}} }

在示例26-2中,“打開圖片”按鈕使用戶可以打開文件選擇器進(jìn)行單個選擇,“打開圖片”按鈕使用戶可以打開文件選擇器進(jìn)行多項(xiàng)選擇。setOnAction這些按鈕的方法幾乎相同。唯一的區(qū)別在于用于調(diào)用a的方法FileChooser。

  • 該showOpenDialog方法顯示一個新的文件打開對話框,其中可以選擇一個文件。該方法返回指定用戶選擇的文件的值,或者null是否未進(jìn)行選擇。

  • 該showOpenMultipleDialog方法顯示了一個新的文件打開對話框,其中可以選擇多個文件。該方法返回指定用戶選擇的文件列表的值,或者null是否未進(jìn)行選擇。無法修改返回的列表,并UnsupportedOperationException在每次修改嘗試時拋出。

兩種方法都不會返回結(jié)果,直到顯示的打開對話框窗口被取消(換句話說,直到用戶提交或取消選擇)。

編譯并運(yùn)行FileChooserSample應(yīng)用程序時,它會生成如圖26-5所示的窗口。

圖26-5帶有兩個按鈕的FileChooserSample

單擊其中一個按鈕時,將出現(xiàn)如圖26-6所示的對話框窗口。打開的文件選擇器對話框窗口顯示操作系統(tǒng)的默認(rèn)位置。

圖26-6默認(rèn)文件選擇器窗口

FileChooserSample應(yīng)用程序的用戶可以導(dǎo)航到包含圖片的目錄并選擇圖片。選擇文件后,將使用關(guān)聯(lián)的應(yīng)用程序打開該文件。示例代碼通過使用實(shí)現(xiàn)此open的方法java.awt.Desktop類:desktop.open(file);。

注意:

Desktop該類的可用性取決于平臺。有關(guān)該類的更多信息,請參閱API文檔Desktop。您還可以使用該isDesktopSupported()方法檢查系統(tǒng)是否支持它。

通過將文件選擇器目錄設(shè)置為包含圖片的特定目錄,可以改善此應(yīng)用程序的用戶體驗(yàn)。

?

配置文件選擇器

您可以通過設(shè)置對象的屬性initialDirectory和title屬性來配置文件選擇器對話框窗口FileChooser。例26-3顯示了如何指定初始目錄以及預(yù)覽和打開圖片的合適標(biāo)題。

示例26-3設(shè)置初始目錄和窗口標(biāo)題

import java.awt.Desktop; import java.io.File; import java.io.IOException; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.GridPane; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.stage.FileChooser; import javafx.stage.Stage;public final class FileChooserSample extends Application {private Desktop desktop = Desktop.getDesktop();@Overridepublic void start(final Stage stage) {stage.setTitle("File Chooser Sample");final FileChooser fileChooser = new FileChooser();final Button openButton = new Button("Open a Picture...");final Button openMultipleButton = new Button("Open Pictures...");openButton.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(final ActionEvent e) {configureFileChooser(fileChooser);File file = fileChooser.showOpenDialog(stage);if (file != null) {openFile(file);}}});openMultipleButton.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(final ActionEvent e) {configureFileChooser(fileChooser);List<File> list = fileChooser.showOpenMultipleDialog(stage);if (list != null) {for (File file : list) {openFile(file);}}}});final GridPane inputGridPane = new GridPane();GridPane.setConstraints(openButton, 0, 0);GridPane.setConstraints(openMultipleButton, 1, 0);inputGridPane.setHgap(6);inputGridPane.setVgap(6);inputGridPane.getChildren().addAll(openButton, openMultipleButton);final Pane rootGroup = new VBox(12);rootGroup.getChildren().addAll(inputGridPane);rootGroup.setPadding(new Insets(12, 12, 12, 12));stage.setScene(new Scene(rootGroup));stage.show();}public static void main(String[] args) {Application.launch(args);}private static void configureFileChooser(final FileChooser fileChooser){ fileChooser.setTitle("View Pictures");fileChooser.setInitialDirectory(new File(System.getProperty("user.home"))); }private void openFile(File file) {try {desktop.open(file);} catch (IOException ex) {Logger.getLogger(FileChooserSample.class.getName()).log(Level.SEVERE, null, ex);}} }

該configureFileChooser方法使用“我的圖片”子目錄設(shè)置“查看圖片”標(biāo)題和用戶主目錄的路徑。編譯并運(yùn)行FileChooserSample并單擊其中一個按鈕時,將出現(xiàn)如圖26-7所示的文件選擇器。

圖26-7打開圖片庫

您還可以讓用戶使用DirectoryChooser該類指定目標(biāo)目錄。在例26-4中顯示的代碼片段中,單擊它會browseButton調(diào)用該directoryChooser.showDialog方法。

示例26-4使用DirectoryChooser類

final Button browseButton = new Button("..."); browseButton.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(final ActionEvent e) {final DirectoryChooser directoryChooser =new DirectoryChooser();final File selectedDirectory =directoryChooser.showDialog(stage);if (selectedDirectory != null) {selectedDirectory.getAbsolutePath();}}} );

執(zhí)行選擇后,您可以按如下方式將相應(yīng)的值分配給文件選擇器:fileChooser.setInitialDirectory(selectedDirectory);。

?

設(shè)置擴(kuò)展過濾器

作為下一個配置選項(xiàng),您可以設(shè)置擴(kuò)展過濾器以確定在文件選擇器中打開哪些文件,如例26-5所示。

示例26-5設(shè)置圖像類型過濾器

import java.awt.Desktop; import java.io.File; import java.io.IOException; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.GridPane; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.stage.FileChooser; import javafx.stage.Stage;public final class FileChooserSample extends Application {private Desktop desktop = Desktop.getDesktop();@Overridepublic void start(final Stage stage) {stage.setTitle("File Chooser Sample");final FileChooser fileChooser = new FileChooser();final Button openButton = new Button("Open a Picture...");final Button openMultipleButton = new Button("Open Pictures..."); openButton.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(final ActionEvent e) {configureFileChooser(fileChooser);File file = fileChooser.showOpenDialog(stage);if (file != null) {openFile(file);}}});openMultipleButton.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(final ActionEvent e) {configureFileChooser(fileChooser); List<File> list = fileChooser.showOpenMultipleDialog(stage);if (list != null) {for (File file : list) {openFile(file);}}}});final GridPane inputGridPane = new GridPane();GridPane.setConstraints(openButton, 0, 1);GridPane.setConstraints(openMultipleButton, 1, 1);inputGridPane.setHgap(6);inputGridPane.setVgap(6);inputGridPane.getChildren().addAll(openButton, openMultipleButton);final Pane rootGroup = new VBox(12);rootGroup.getChildren().addAll(inputGridPane);rootGroup.setPadding(new Insets(12, 12, 12, 12));stage.setScene(new Scene(rootGroup));stage.show();}public static void main(String[] args) {Application.launch(args);}private static void configureFileChooser(final FileChooser fileChooser) { fileChooser.setTitle("View Pictures");fileChooser.setInitialDirectory(new File(System.getProperty("user.home"))); fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("All Images", "*.*"),new FileChooser.ExtensionFilter("JPG", "*.jpg"),new FileChooser.ExtensionFilter("PNG", "*.png"));}private void openFile(File file) {try {desktop.open(file);} catch (IOException ex) {Logger.getLogger(FileChooserSample.class.getName()).log(Level.SEVERE, null, ex);}} }

在示例26-5中,您可以使用FileChooser.ExtensionFilter以定義文件選擇的以下選項(xiàng)來設(shè)置擴(kuò)展過濾器:所有圖像,JPG和PNG。

編譯時,運(yùn)行例26-5中的FileChooserSample代碼,然后單擊其中一個按鈕,擴(kuò)展名篩選器將出現(xiàn)在文件選擇器窗口中。如果用戶選擇JPG,則文件選擇器僅顯示JPG類型的圖片。圖26-8捕獲了My Pictures目錄中選擇JPG圖像的時刻。

圖26-8在文件選擇器中過濾JPG文件

?

保存文件

除了打開和過濾文件之外,FileChooserAPI還提供了一種功能,允許用戶為應(yīng)用程序保存的文件指定文件名(及其在文件系統(tǒng)中的位置)。該類的showSaveDialog方法FileChooser打開一個保存對話框窗口。與其他show dialog方法一樣,該showSaveDialog方法返回用戶選擇的文件,或者null如果沒有執(zhí)行選擇。

例26-6中顯示的代碼片段是Menu示例的補(bǔ)充。它還實(shí)現(xiàn)了上下文菜單中的另一項(xiàng),用于將顯示的圖像保存在文件系統(tǒng)中。

示例26-6使用FileChooser類保存圖像

MenuItem cmItem2 = new MenuItem("Save Image");cmItem2.setOnAction(new EventHandler<ActionEvent>() {public void handle(ActionEvent e) {FileChooser fileChooser = new FileChooser();fileChooser.setTitle("Save Image");System.out.println(pic.getId());File file = fileChooser.showSaveDialog(stage);if (file != null) {try {ImageIO.write(SwingFXUtils.fromFXImage(pic.getImage(),null), "png", file);} catch (IOException ex) {System.out.println(ex.getMessage());}}}} );

將Example 26-6添加到MenuSample應(yīng)用程序(在Application Files中查找源代碼),編譯并運(yùn)行它時,啟用Save Image菜單項(xiàng),如圖26-9所示。

圖26-9保存圖像

用戶選擇“保存圖像”項(xiàng)后,將出現(xiàn)如圖26-10所示的“保存圖像”窗口。

圖26-10“保存圖像”窗口

“保存圖像”窗口對應(yīng)于保存對話框窗口的典型用戶體驗(yàn):用戶需要選擇目標(biāo)目錄,鍵入保存文件的名稱,然后單擊“保存”。

?

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

  • FileChooser

  • DirectoryChooser

總結(jié)

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

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

主站蜘蛛池模板: 亚洲三级图片 | 欧美一级片免费观看 | 国产伦精品 | 国产精品高潮呻吟视频 | 美女丝袜av| 色呦呦在线播放 | 无码av免费毛片一区二区 | 国产自产自拍 | 一区二区欧美在线 | 久久99热这里只有精品 | 五月婷婷激情小说 | 日韩亚洲欧美一区二区 | 精品黄色 | 中文字幕在线观看日本 | 在线免费播放av | 99色这里只有精品 | 亚洲一区亚洲二区 | 色吊丝av中文字幕 | 全国探花 | 丁香一区二区 | 91av日本| 中文字幕日产av | 91视频国产免费 | 亚洲激情视频网 | 操网| 久久久香蕉 | 亚洲av无码国产精品久久久久 | 精品久久久久久久中文字幕 | 国产欧美日韩三级 | 黑人多p混交群体交乱 | 日韩视频一 | 日韩一级免费 | 91看片网页版 | 国产成人免费观看 | 精品欧美乱码久久久久久1区2区 | 日本真人做爰免费视频120秒 | 免费看成年人视频 | 久久精品亚洲精品国产欧美 | 日韩精品视频一区二区三区 | 密桃av在线 | 亚洲欧美成人 | 男生女生操操操 | 亚洲天堂成人在线 | h视频网站在线观看 | 午夜色福利 | 黄色喷水视频 | 97人妻一区二区精品免费视频 | 国产乱码一区二区三区播放 | 97福利影院| 日韩一级片免费观看 | 久久草视频 | 亚洲一区精品在线观看 | 中文字幕被公侵犯的漂亮人妻 | 91精品国产乱码久久久 | 日韩伦理在线视频 | 男人懂得网站 | fc2ppv在线播放 | julia一区二区 | 高清国产mv在线观看 | 中文字幕日本一区 | 香蕉视频网页版 | 久久美女性网 | 成人免费看片'在线观看 | 免费麻豆 | 九月丁香婷婷 | 日本少妇吞精囗交视频 | 久草久| 日日燥夜夜燥 | 日韩毛片中文字幕 | 国产精品视频网站 | 日欧视频| 亚洲激情网站 | 久久在线免费观看视频 | 成人v| 亚洲不卡在线视频 | 成人免费xxxxxx视频 | 成人性生交大片免费看中文 | 精品视频一区二区三区四区五区 | 91精品网 | 国产专区一 | 亚洲视频一区二区三区四区 | 操大爷影院 | 狠狠摸狠狠操 | 中文字幕欧美日韩 | h片在线观看视频 | 国产亚洲精品一区二区三区 | 欧美中文字幕在线视频 | 亚洲伦理在线视频 | 夜夜草导航 | 亚洲av日韩av不卡在线观看 | 日批在线观看视频 | www.亚洲综合 | 制服.丝袜.亚洲.中文.综合懂色 | 韩国伦理在线 | 欧美一二三视频 | 久久精品电影 | 久久久久久久999 | 欧美性天天影院 | av黄色在线播放 |