我有一個使用了許多複選框的javafx應用程序。當一個複選框被選中時,一個按鈕將出現在主窗口中。複選框設置爲「false」會使按鈕消失。很簡單。使複選框記住它的狀態的最佳方法是什麼?
問題是,該複選框不記得它的確認,以及應用程序始終與複選框的選中狀態開始,如FXML文件中定義:
<CheckBox fx:id="googleHider" onAction="#hideGoogle" selected="true" text="Google">
因爲我無法找到任何滿足於谷歌,我想出了一個本土解決方案,設置了一個函數,可以直接在fxml文檔中將複選框的選中狀態設置爲「true」或「false」,這很好地工作。
我只是想知道這是不錯的做法,簡單而有效,或者如果有人發現或可以想象出更優雅或簡約的解決方案。 (我以前的編程經驗更是在Python,我不知道這是否顯示。有沒有更「Javaian」的方式...?)
boolean isSelected = googleHider.isSelected();
if (isSelected == false) {
System.out.println("not selected");
Path path = Paths.get("src/javafxapplication2/PopupFXML.fxml");
Charset charset = StandardCharsets.UTF_8;
String content = new String(Files.readAllBytes(path));
//following line changes the initial state of the checkbox from "true" to "false"
content = content.replaceAll("\"#hideGoogle\" selected=\"true\"", "\"#hideGoogle\" selected=\"false\"");
Files.write(path, content.getBytes(charset));
}
else {
System.out.println("selected");
Path path = Paths.get("src/javafxapplication2/PopupFXML.fxml");
Charset charset = StandardCharsets.UTF_8;
String content = new String(Files.readAllBytes(path));
// next line changes the state back from "false" to "true"
content = content.replaceAll("\"#hideGoogle\" selected=\"false\"", "\"#hideGoogle\" selected=\"true\"");
Files.write(path, content.getBytes(charset));
}
雖然我喜歡你的方法,因爲它是開箱即用,我還是覺得更清晰的方式來做到這一點是創建一個設置文件,然後在啓動時從文件中讀取值和在關機時將值保存到文件 – SteelToe
好主意,這個設置文件最好位於javafx應用程序中的位置?它會是一個txt.file?你知道任何文件或更明確的方向? – rainer
可能重複的[如何在Java中讀取配置文件](http://stackoverflow.com/questions/16273174/how-to-read-a-configuration-file-in-java) –