#7 — Создание дополнительного окна
В уроке мы создадим еще одно окно, а также поработаем над функциональной составляющей нашего приложения. Мы научимся обрабатывать нажатия на различные кнопки и создадим классы, отвечающие за конкретные экраны приложения.
Видеоурок
За каждое отдельное окно в приложении отвечает отдельный fxml файл. Таких файлов может быть сколько угодно. Переключение между файлами осуществляется за счёт написания специального кода, который мы рассмотрим позже.
Для добавления функциональности необходимо прописать класс контроллер, что будет обрабатывать все нажатия на странице приложении.
Функции в контроллере можно добавить лишь к тем объектам, для которых прописан специальный атрибут «id». Прописать атрибут можно через программу Scene Builder.
Вывод результата программы в окне
Вывод результата в окне
вопрос№1 как что я делаю не так, вопрос№2 как сделать, чтобы результат выводился в окне result?
Вывод результата в другом окне.
есть скрипт, который осуществяет генерацию формы для поиска и собственно сам поиск и вывод.
Вывод результата в новом окне
Привет. Есть код: case ‘5’ document.location.href = ‘QualityTable3.asp?Month=’ &.
Вывод результата в том же окне
к примеру есть страница html и скрипт php(он не в хтмл, а вынесен отдельно в файл). По нажатию.
1240 / 853 / 264
Регистрация: 02.04.2009
Сообщений: 3,225
Бейсик рулит,
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
import java.awt.FlowLayout; import java.awt.event.ActionEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class Gui extends JFrame { private JButton btnPushMe = new JButton("Push me!"); public Gui() { super("This is my title"); this.setSize(600, 400); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); JPanel contentPane = (JPanel)this.getContentPane(); contentPane.setLayout(new FlowLayout()); contentPane.add(btnPushMe); btnPushMe.addActionListener(this::btnPushMe); this.setVisible(true); } private void btnPushMe(ActionEvent event) { System.out.println("Button clicked!"); } public static void main(String[] args) { new Gui(); } }
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Вывод результата в новом окне в DataGridView
Приветстсвую,скажите какая должна быть строка если элемент находится в другом окне. .
Вывод результата выполнения скрипта в модальном окне
суть в следующем: на сайте в шапке задуман адрес и ссылка на схему проезда. в яндексовском.
Вывод результата работы программы
Имеется следующий код программы. Программа работает корректно и считает все правильно. Но есть.
Вывод результата работы программы
Всем добрый вечер., столкнулся со след проблемой: #include <io.h> #include<iostream>.
Java несколько окон JFrame
Здравствуйте. Я новичок в программировании и есть у меня «ламерский» вопрос. Есть 2 формы JFrame(назовем их form1 и form2). Как сделать, чтобы по нажатию кнопки в одной форме, данная форма закрылась и открылась другая? Правильно ли будет сделать так — при нажатии на кнопку, visible form1 установить как false и след. строчка кода form2 = new JFrame(); Хочется делать все правильно)
Отслеживать
задан 2 мая 2011 в 17:29
29 1 1 золотой знак 2 2 серебряных знака 7 7 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Давайте начнем разбираться 🙂
где-то в коде должно появиться примерно следущие:
JFrame form1 = new JFrame("form1"); JButton button = new JButton("visible"); form1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); form1.setSize(350,150); form1.add(button); form1.setVisible(true); //а теперь главное - обработчик событий кнопки button.addActionListener(new ActionListener() < public void actionPerformed(ActionEvent e) < //а вот тут как раз код чего делать при нажатии на кнопку //в самом простом виде следующие: JFrame form2 = new JFrame("form2"); form2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); form2.setSize(350,150); //не видим первую форму form1.setVisible(false); //открываем вторую form2.setVisible(true); >>);
тут другой вопрос интереснее — чего с потоками, как и где создаются фреймы(в каком месте и можно ли их так просто закрыть) и т.д.. От этого напрямую зависит как вызывать обработку нажатия на кнопку и где.
Java/Первое окно
Так как в большинстве своем сегодняшние начинающие программисты не любят окно командной строки — приведу пример оконного приложения.
- 1 Начнем с простого
- 2 Делаем что-то полезное
- 2.1 Дизайн
- 2.2 Скелет программы
- 2.3 Добавляем функциональность
- 2.3.1 addCrow
- 2.3.2 removeCrow
- 2.3.3 updateCrowCounter
Начнем с простого править
import javax.swing.JFrame; public class MyWindowApp extends JFrame //Наследуя от JFrame мы получаем всю функциональность окна public MyWindowApp() super("My First Window"); //Заголовок окна setBounds(100, 100, 200, 200); //Если не выставить //размер и положение //то окно будет мелкое и незаметное setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //это нужно для того чтобы при //закрытии окна закрывалась и программа, //иначе она останется висеть в процессах > public static void main(String[] args) //эта функция может быть и в другом классе MyWindowApp app = new MyWindowApp(); //Создаем экземпляр нашего приложения app.setVisible(true); //С этого момента приложение запущено! > >
Вот у нас и получилось ничего не делающее приложение!
Делаем что-то полезное править
Это конечно замечательно уметь показывать пустое окно, но мы хотим, чтобы оно приносило пользу! Создадим форму для подсчета ворон на заборе. Для этого будем отображать текущее количество ворон и с помощью двух кнопок добавлять или вычитать по одной.
Дизайн править
Это то, что мы примерно хотим увидеть:
Вороносчет Ворон на заборе : 666 Ворона прилетела Ворона улетела Скелет программы править
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class VoronCalc extends JFrame private int voron = 0; private JLabel countLabel; private JButton addCrow; private JButton removeCrow; public VoronCalc() super("Crow calculator"); //Подготавливаем компоненты объекта countLabel = new JLabel("Crows:" + voron); addCrow = new JButton("Add Crow"); removeCrow = new JButton("Remove Crow"); //Подготавливаем временные компоненты JPanel buttonsPanel = new JPanel(new FlowLayout()); //Расставляем компоненты по местам buttonsPanel.add(countLabel, BorderLayout.NORTH); //О размещении компонент поговорим позже buttonsPanel.add(addCrow); buttonsPanel.add(removeCrow); add(buttonsPanel, BorderLayout.SOUTH); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); > public static void main(String[] args) VoronCalc app = new VoronCalc(); app.setVisible(true); app.pack(); //Эта команда подбирает оптимальный размер в зависимости от содержимого окна > >
После компиляции и запуска — получится что-то такое:
Добавляем функциональность править
Пришло время добавить немного интерактивности. Нам нужно сделать 3 вещи:
- Научить кнопку addCrow добавлять 1 к переменной voron.
- Научить кнопку removeCrow вычитать 1 из переменной voron.
- Научить countLabel — обновлять свое значение в зависимости от содержимого переменной voron.
addCrow править
Добавляем listener для кнопки addCrow.
addCrow.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) voron = voron+1; //Добавляем одну ворону countLabel.setText("Crows:" + voron); //Сообщаем приложению, что количество ворон изменилось > >);
removeCrow править
Добавляем listener для кнопки removeCrow.
removeCrow.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if( voron > 0 ) voron = voron - 1; countLabel.setText("Crows:" + voron); //Сообщаем приложению, что количество ворон изменилось > > >);
updateCrowCounter править
private void updateCrowCounter() countLabel.setText("Crows:" + voron); >
Конечный результат править
- VoronCalc.java — главный класс программы