Login
Java
1273 просмотров
Перейти к просмотру всей ветки
in Antwort uscheswoi_82 08.09.23 03:17, Zuletzt geändert 08.09.23 03:45 (uscheswoi_82)
Добавим чтобы при нажатие на выход, чтобы отображалось диалоговое окно, и приложение спрашивало о завершение сеанса:
Добавим библиотеки:
import javax.swing.JOptionPane; import java.awt.event.WindowEvent;
Изменим код:
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // При закрытие приложения сработает событие processWindowEvent
Добавим код:
private void closeDialog() { // Отображаем диалоговое окно, которое будет спрашивать выйти или нет int result = JOptionPane.showConfirmDialog(this, "Вы уверены что вы хотите выйти из приложения?", "Завершение сеанса", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); // Если нажали на Yes (да) то выходим if(result == JOptionPane.YES_OPTION) System.exit(0); // Закрываем приложение } // Если нажали на ... protected void processWindowEvent(WindowEvent e) { // Если нажали на X if(e.getID() == WindowEvent.WINDOW_CLOSING) { closeDialog(); // Выходим } }
Изменим код:
public void actionPerformed(ActionEvent e){ // Если нажали на Выход (Файл->Выход, или кнопку с иконкой двери на панельки if(e.getSource() == popupExit || e.getSource() == btnExit) { closeDialog(); // Выходим } }
Полный код Hello_World.java:
import javax.swing.JFrame; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.Toolkit; import javax.swing.JButton; import java.awt.BorderLayout; import javax.swing.JToolBar; import javax.swing.ImageIcon; import javax.imageio.ImageIO; import javax.swing.JOptionPane; import java.awt.event.WindowEvent; class Hello_World extends JFrame implements ActionListener { JMenuItem popupExit; JButton btnExit; public Hello_World() { setTitle("Простое приложение"); // Заголовок окна Простое приложение setSize(640, 480); // Размер окна 640x480 setIconImage(Toolkit.getDefaultToolkit().getImage("icon.png")); // Иконка setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // При закрытие приложение сработает событие processWindowEvent JMenuBar bar = new JMenuBar(); // Добавляем менюшки JMenu mnuFile = new JMenu("Файл"); // Добавляем горизонтальное меню Файл mnuFile.setMnemonic('Ф'); popupExit = new JMenuItem("Выход"); // Добавляем вертикальное меню Выход popupExit.setMnemonic('В'); popupExit.addActionListener(this); // Устанавливаем событие, говорим что обработчик этот класс mnuFile.add(popupExit); // Добавляем вертикальное меню в горизонтальное bar.add(mnuFile); // Добавляем горизонтальное меню в вертикальное меню setJMenuBar(bar); // Добавляем менюшки в окно setLayout(new BorderLayout()); // Добавим BorderLayout JToolBar toolbar = new JToolBar("Главная панель"); // Добавляем панельку Toolbar, и добавляем названия панельки toolbar.setFloatable(true); toolbar.setRollover(true); btnExit = new JButton(); // Добавляем кнопку btnExit.addActionListener(this); // Обработчик исключения try { btnExit.setIcon(new ImageIcon(ImageIO.read(getClass().getResource("button_exit.png")))); // Добавляем иконку (картинку) в кнопку btnExit } catch(Exception ex) {} toolbar.add(btnExit); add(toolbar, BorderLayout.NORTH); setVisible(true); // Отображаем окно } public static void main(String[] args) { new Hello_World(); } private void closeDialog() { // Отображаем диалоговое окно, которое будет спрашивать выйти или нет int result = JOptionPane.showConfirmDialog(this, "Вы уверены что вы хотите выйти из приложения?", "Завершение сеанса", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); // Если нажали на Yes (да) то выходим if(result == JOptionPane.YES_OPTION) System.exit(0); // Если нажали на Файл->Выход или на кнопку на панели выход, то закрываем приложение } // Если нажали на ... protected void processWindowEvent(WindowEvent e) { // Если нажали на X if(e.getID() == WindowEvent.WINDOW_CLOSING) { closeDialog(); // Выходим } } public void actionPerformed(ActionEvent e){ // Если нажали на Выход (Файл->Выход, или кнопку с иконкой двери на панельки if(e.getSource() == popupExit || e.getSource() == btnExit) { closeDialog(); // Выходим } } }
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение