Deutsch

Java

08.09.23 03:42
Re: Java
 
uscheswoi_82 коренной житель
в ответ uscheswoi_82 08.09.23 03:17, Последний раз изменено 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(); // Выходим
    }
  }
}
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
 

Перейти на