воскресенье, 2 января 2022 г.
суббота, 1 января 2022 г.
Angel Ceramic
Posted on 10:15 by Востряков Илья with No comments
Unique and funny, one of a kind bell ceramic angel. Every item in my store is handmade, each one is painted by hand with a brush. The smiling Angel has blue wings and a small flower in her/his hands. I put my signature inside the bell while I paint with underglaze paints. In my work, I use traditional techniques.
суббота, 4 октября 2014 г.
Autoresize любых объектов в JavaFX
Posted on 01:31 by Востряков Илья with No comments
Давно встречаю на просторах сети вопросы по Java FX вроде: "Как сделать так, чтобы некий объект расширялся вслед за расширением родительского окна?". Под неким объектом понимается любой Node объект имеющий Width, Height property.
Помнится много лет назад, когда я еще программировал на Delphi там было удобное свойство у объектов: align client. В JavaFX пока такого нет, но оно и не нужно, есть более удобные в употреблении свойства с большим потенциалом использования.
Способ 1 (Bind)
У нас есть TreeView и мы хотим, чтобы оно расширялось вместе с родительским окном:
@FXML AnchorPane anchpane TreeView tree = new TreeView(); tree.prefWidthProperty().bind(anchPane.widthProperty()); tree.prefHeightProperty().bind(anchpane.heightProperty());
Самый удобный способ - это связать свойства двух объектов и это делается в две строчки кода, при желании можно и в одну уместить.
Способ 2 (ручной)
Если по каким-то причинам мы не можем использовать Bind, можно реализовать и ручное связывание свойств объектов.
Если по каким-то причинам мы не можем использовать Bind, можно реализовать и ручное связывание свойств объектов.
anchpane.widthProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observableValue, Number oldSceneWidth, Number newSceneWidth) { System.out.println("Width: " + newSceneWidth); //Здесь мы можем отправить к любому нашему объекту новое значение Width } }); anchpane.heightProperty().addListener(new ChangeListener () { @Override public void changed(ObservableValue observableValue, Number oldSceneHeight, Number newSceneHeight) { System.out.println("Height: " + newSceneHeight); //Здесь мы можем отправить к любому нашему объекту новое значение Height } });
Способ 3 (FXML)
Если мы по каким-то причинам не можем использовать код (?), то есть способ и в FXML сделать auto resize.
Мне наиболее удобен bind (у него масса вариаций и возможности применения бесконечны, если Вы не знакомы с этим, срочно отправляйтесь в Google с запросом javafx bind), но возможно есть задачи, когда нужно сделать и "ручное" связывание. Способ с FXML мне кажется не слишком удобным, но кто его знает - бывают очень специфические случаи, вдруг пригодится.
Надеюсь, теперь у Вас не будет проблем с resize или autosize объектов в JavaFX.
Обязательно читайте: Литература по JavaFX
Обязательно читайте: Литература по JavaFX
среда, 17 сентября 2014 г.
Событие закрытия окна в Java FX
Posted on 03:21 by Востряков Илья with 1 comment
Слушать событие закрытия окна можно разными способами.
Событие закрытия окна:
import javafx.event.EventHandler; ... @Override public void start(Stage stage) throws Exception { Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml")); Scene scene = new Scene(root); stage.setScene(scene); stage.show(); stage.setOnCloseRequest(new EventHandler<WindowEvent>() { public void handle(WindowEvent we) { System.out.println("Stage is closing"); } }); }
Предотвратить закрытие окна:
import javafx.event.EventHandler; ... @Override public void start(Stage stage) throws Exception { Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml")); Scene scene = new Scene(root); stage.setScene(scene); stage.show(); stage.setOnCloseRequest(new EventHandler<WindowEvent>(){ @Override public void handle(WindowEvent event) { event.consume(); } }); }
Событие закрытия приложения:
public class WindowCloseTestApp extends Application { @Override public void start(Stage stage) throws Exception { Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml")); Scene scene = new Scene(root); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } @Override public void stop(){ //Здесь Вы можете прописать все действия при закрытии Вашего приложения. } @Override public void init(){ //Инициализация любых данных, до включения основного потока Start в работу. //К теме не относится, но тоже полезно! } }
Оф. документация: жизненный цикл приложений java.
Литература по JavaFX
пятница, 12 сентября 2014 г.
Аннотация Override
Posted on 03:41 by Востряков Илья with No comments
Пример работы с аннотацией Override в языке Java
Задача программы вывод голосов разных существ. Мы будем работать с 3 видами: это собака, кошка и рыба. Предположим, что мы пишем некое игровое приложение и нам необходимо выводить звуки разных животных но, среди животных есть те, которые не произносят явных звуков, но они входят в общий класс Pet и используют общий метод Voice. Для того, чтобы персонализировать метод Voice для определенного суб класса (Fish) мы будем использовать аннотацию Override.
Подписаться на:
Сообщения (Atom)