У меня есть приложение javafx, которое использует много флажков. Когда установлен флажок, в главном окне появится кнопка. Флажок установлен на «false», кнопка исчезает. Достаточно легко.Каков наилучший способ сделать checkbox помнить его состояние?
Проблема заключается в том, что флажок не помнит, что было проверено и приложение всегда начинается с флажками, выбранными, как определено в файле FXML:
<CheckBox fx:id="googleHider" onAction="#hideGoogle" selected="true" text="Google">
Так как я не мог найти ничего, удовлетворяющих на Google , Я придумал доморощенные решения, установив функцию, которая устанавливает выбранное состояние флажка в «true» или «false» непосредственно в документе fxml, который отлично работает.
Мне просто интересно, если это хорошая практика, простая и эффективная, или если кто-то нашел или может представить более элегантное или минималистичное решение. (Мой предыдущий опыт программирования больше в 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) –