JavaFX — открытие второго окна по кнопке
Здравствуйти товарищи!
Я в FX совсем совсем не давно, суть вопроса:
Нужно по нажатию кнопки открыть вторую форму. Наример форму настроек.
Можно ли как создавть все формы заранее в методе start, а потом просто их отобраать?
Вот я сделал так (чувствую по былячему), как вообще делаются подобные вещи. (каждая форма в своем пакете со своим котнролером)
В главном классе создал метод:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
public void showSettings() { if (!settings.isShowing()) { try { root = FXMLLoader.load(getClass().getResource("/loader/forms/settings/settings.fxml")); settings.setScene(new Scene(root, 547, 160)); settings.setTitle("Настройка подключения"); settings.setResizable(false); Controller_settings.stage = settings; // Передаем в контроллер окна ссылку на него settings.show(); } catch (Exception e) { e.printStackTrace(); } } else { settings.toFront(); } }
В контролере формы с которой хочу вызвать сделал так:
private Main main = new Main(); @FXML private void onActionMenuSettings(ActionEvent event) { main.showSettings(); }
В общем поторюсь научите работать с различными формами, как открывать и закрывать.
Не могу на каком этапе правельнее подгружать fxml и открывать окно.
Спасибо заранее!
По нажатию кнопки в окне открытие другого окна
Доброго времени суток!
Создал в swing’е окно с кнопкой в одном классе и другое окно в другом соответственно.
Пытаюсь сделать так, что бы после нажатия кнопки в первом окне запускалось второе. Как я понимаю нужно в обработчике событий кнопки как то запустить класс со вторым окном, но вот как это сделать не понимаю.
Буду благодарен за помощь.
Открытие определенного файла по нажатию кнопки в отдельном окне
Как сделать так, чтобы при нажатии на кнопку открывался определенный файл(который лежит в одной.
Открытие окна по нажатию кнопки
Добрый вечер форумчане! Есть 2 формы, основная Form и About — "О программе". Как по нажатию.
Открытие окна по нажатию кнопки
Подскажите пожалуйста, как сделать так чтоб при нажатии кнопки открывалось данное окно (поверх.
Реализовать открытие окна в указанном месте по нажатию кнопки
Вопрос, необходимо чтобы при нажатие на кнопку открывала в том окне где изначально программа.
Сообщение было отмечено dan_rf как решение
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
import javax.swing.*; import java.awt.event.*; /* * Класс главного окна * */ public class MainFrame extends JFrame { //Кнопка private JButton button1; //Второе окно private Dialog dialog; //Конструктор главного окна public MainFrame() { //Устанавливаем размеры главного окна setSize(400, 500); //Создаем объект панели, на котором будет отображаться кнопка JPanel panel = new JPanel(); //Добавляем BoxLayout panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); //Создаем кнопку button1 = new JButton("show dialog"); //Устанавливаем размеры кнопки button1.setSize(100, 50); //Выравниваем по центру по оси X button1.setAlignmentX(JComponent.CENTER_ALIGNMENT); //Создаем диалог dialog = new Dialog(); //Обрабатываем событие при нажатии на кнопку button1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // Делаем видимым второе окно dialog.setVisible(true); } }); //Добавляем кнопку на панель panel.add(button1); //Дабавляем панель на главное окно add(panel); //Делаем окно по центру setLocationRelativeTo(null); //Делаем видимым главное окно setVisible(true); } public static void main(String[] args) { //Запускаем главное окно SwingUtilities.invokeLater(new Runnable() { public void run() { new MainFrame(); } }); } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
import javax.swing.JDialog; /* * Класс второго окна * */ public class Dialog extends JDialog { //Конструктор второго окна public Dialog() { //Делаем невидимым окно setVisible(false); //Устанавливаем размеры setSize(200, 250); //Отображаем по центру setLocationRelativeTo(null); } }
Откройте новое окно (window) в JavaFX
Следуйте за нами на нашей фан-странице, чтобы получать уведомления каждый раз, когда появляются новые статьи. Facebook
1- Window в JavaFX
Существует 3 вида модальости(modelity), которые вы можете применить для Stage через метод stage.initModality(Modelity).
При создании нового Stage, вы можете настроить для него родительское окно (Так же называется окно, которое владеет им), через метод stage.initOwner(parentStage).
No | Модальность | Описание |
1 | Modelity.NONE | Когда вы открываете новое окно с этой модальностью (modelity), новое окно будет независимым по отношению к родительскому окну. Вы можете интерактировать с родительским окном, или закрыть его не влияя на новое окно. |
2 | Modelity.WINDOW_MODAL | Когда вы открываете новое окно с этой модальностью (modelity), новое окно блокирует родительское окно. Вы не можете интерактировать с родительским окном, до тех пор, пока это окно не закроется. |
3 | Modelity.APPLICATION_MODAL | Когда вы открываете новое окно с этой модальностью (modelity), оно блокирует все другие окна приложения. Вы не можете интерактировать ни с каким окном, до тех пор пока это окно не закроется. |
2- Например, откройте Modeless Window
Например, когда вы нажимете на Button на окне 1, он откроет второе окно с модальностью (modelity) по умолчанию (Modeless Window / Modelity.NONE).
package org.o7planning.javafx.window; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class OpenNewModelessWindowExample extends Application < @Override public void start(final Stage primaryStage) < Button button = new Button(); button.setText("Open a New Window"); button.setOnAction(new EventHandler() < @Override public void handle(ActionEvent event) < Label secondLabel = new Label("I'm a Label on new Window"); StackPane secondaryLayout = new StackPane(); secondaryLayout.getChildren().add(secondLabel); Scene secondScene = new Scene(secondaryLayout, 230, 100); // New window (Stage) Stage newWindow = new Stage(); newWindow.setTitle("Second Stage"); newWindow.setScene(secondScene); // Set position of second window, related to primary window. newWindow.setX(primaryStage.getX() + 200); newWindow.setY(primaryStage.getY() + 100); newWindow.show(); >>); StackPane root = new StackPane(); root.getChildren().add(button); Scene scene = new Scene(root, 450, 250); primaryStage.setTitle("JavaFX Open a new Window (o7planning.org)"); primaryStage.setScene(scene); primaryStage.show(); > public static void main(String[] args) < launch(args); >>
3- Например, откроем Modal Window
Например, когда вы нажимете на Button на окне 1, он откроет новое окно с модальностью Modal Window (Modelity.WINDOW_MODAL). Когда еще отображается новое окно, вы не можете интерактировать с родительским окном.
package org.o7planning.javafx.window; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.layout.StackPane; import javafx.stage.Modality; import javafx.stage.Stage; public class OpenNewModelWindowExample extends Application < @Override public void start(final Stage primaryStage) < Button button = new Button(); button.setText("Open a New Window"); button.setOnAction(new EventHandler() < @Override public void handle(ActionEvent event) < Label secondLabel = new Label("I'm a Label on new Window"); StackPane secondaryLayout = new StackPane(); secondaryLayout.getChildren().add(secondLabel); Scene secondScene = new Scene(secondaryLayout, 230, 100); // New window (Stage) Stage newWindow = new Stage(); newWindow.setTitle("Second Stage"); newWindow.setScene(secondScene); // Specifies the modality for new window. newWindow.initModality(Modality.WINDOW_MODAL); // Specifies the owner Window (parent) for new window newWindow.initOwner(primaryStage); // Set position of second window, related to primary window. newWindow.setX(primaryStage.getX() + 200); newWindow.setY(primaryStage.getY() + 100); newWindow.show(); >>); StackPane root = new StackPane(); root.getChildren().add(button); Scene scene = new Scene(root, 450, 250); primaryStage.setTitle("JavaFX Open a new Window (o7planning.org)"); primaryStage.setScene(scene); primaryStage.show(); > public static void main(String[] args) < launch(args); >>
View more Tutorials:
Это онлайн курс вне вебсайта o7planning, который мы представляем, он включает бесплатные курсы или курсы со скидкой.
- Complete E-Commerce Course — Java,Spring,Hibernate and MySQL
- Create Complete Web Applications easily with APEX 5
- Administering Microsoft SQL Server 2012 Databases — 70-462
- Java Fx Concepts With Practical Examples
- Learn Google Flutter: Build Mobile Applications
- JavaFX tutorial: Learn JavaFX with Examples
- From 0 to 1: JavaFX and Swing for Awesome Java UIs
- JavaFx Tutorial For Beginners
- Web Scraping with Python, Ruby & import. io
- Sharepoint: SPFx Development Model
- Microservices with Spring Cloud
- JavaFX : Learn to build powerful client applications
- Oracle APEX Techniques
- * * Master ECMAScript 2015 (ES6)
- UI&UX Design , Animation And Material design In Javafx
- Java for Intermediate Users
- Build Outstanding Java Apps with JavaFX much faster
- For Free — Deploy Quickly Spring Boot on Heroku With MySQL
- Advanced Java programming with JavaFx: Write an email client
- Basic Concepts of Web Development, HTTP and Java Servlets
- iOS 11 Programming with SWIFT
- Unity: Learn Android Game Development by recreating games
- * * Crash Course Into JavaFX: The Best Way to make GUI Apps
- Understanding JDBC with PostgreSQL (A step by step guide)
Открыть новое окно при нажатии кнопки
То есть должно быть так: Нажимаю на кнопку в окне=>открывается новое окно.
У меня не открывается, и я сильно запутался.
Есть мысль, что нужно второе окно сделать дочерним в отношении первого,если это так, то подскажите как реализовать.
Java Swing открыть новое окно и при нажатии на кнопку вернуться к предыдущему
Всем здравствуйте. Использую IDE Eclipse Neon. Скачал дополнительно для него Swing Designer. Есть.
Надо чтобы при нажатии кнопки в первом окне открывалось второе окно
Надо чтобы при нажатии кнопки в первом окне открывалось второе окно, а первое окно становилось.
Как из аплета открыть новое окно браузера и показать в нем сстраницу
Подскажите, пожалуйста, Как из аплета открыть новое окно браузера и показать в нем сгенерированную.
Старт анимации не при старте программы, а при нажатии кнопки
Всем привет, как можно переделать нижеприведённый код чтобы анимация срабатывала не при старте.
Сообщение было отмечено Sovok999 как решение
Решение
Если мне не изменяет память, должно быть что-то такое:
class BAction implements ActionListener //кнопка задания 1 { public void actionPerformed(ActionEvent e) { JFrame form2 = new JFrame(); form2.pack(); form2.setVisible(true);//делаю форму 2 видимой } }