Deutsch

Java

1273  
uscheswoi_82 коренной житель17.07.23 14:25
NEW 17.07.23 14:25 

Самый простой пример оконного приложения, создадим файл Hello_World.java:

import javax.swing.JFrame;
class Hello_World extends JFrame {
  public Hello_World() {
    setTitle("Hello World"); // Заголовок окна Hello World
    setSize(640, 480); // Размер окна 640x480
    setVisible(true); // Отображаем окно
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // При закрытие приложение закроется
  }
  public static void main(String[] args) {
    new Hello_World(); // Запуск приложения
  }
}


Теперь давайте откомпилируем, введём следующую команду:

javac Hello_World.java


Теперь давайте запустим наше приложение, введём следующую команду:

java Hello_World


Вы должны увидеть такое окно:

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#1 
uscheswoi_82 коренной житель17.07.23 14:48
NEW 17.07.23 14:48 
в ответ uscheswoi_82 17.07.23 14:25

Ошибка код:

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // При закрытие приложение закроется

должен быть до:

setVisible(true); // Отображаем окно


Т.е. так:

import javax.swing.JFrame;
class Hello_World extends JFrame {
  public Hello_World() {
    setTitle("Hello World"); // Заголовок окна Hello World
    setSize(640, 480); // Размер окна 640x480
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // При закрытие приложение закроется
    setVisible(true); // Отображаем окно
  }
  public static void main(String[] args) {
    new Hello_World(); // Запуск приложения
  }
}
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#2 
uscheswoi_82 коренной житель17.07.23 15:09
NEW 17.07.23 15:09 
в ответ uscheswoi_82 17.07.23 14:48

Давайте теперь наше приложение улучшим, и добавим меню, итак давайте изменим файл Hello_World.java:


import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
class Hello_World extends JFrame {
  public Hello_World() {
    setTitle("Простое приложение"); // Заголовок окна Простое приложение
    setSize(640, 480); // Размер окна 640x480
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // При закрытие приложение закроется
    JMenuBar bar = new JMenuBar(); // Добавляем менюшки
    JMenu mnuFile = new JMenu("Файл"); // Добавляем горизонтальное меню Файл
    mnuFile.setMnemonic('Ф'); 
    JMenuItem popupExit = new JMenuItem("Выход"); // Добавляем вертикальное меню Выход
    popupExit.setMnemonic('В');
    mnuFile.add(popupExit); // Добавляем вертикальное меню в горизонтальное
    bar.add(mnuFile); // Добавляем горизонтальное меню в вертикальное меню
    setJMenuBar(bar); // Добавляем менюшки в окно
    setVisible(true); // Отображаем окно
  }
  public static void main(String[] args) {
    new Hello_World(); // Запуск приложения
  }
}


Теперь скомпилируем Hello_World.java:

javac -encoding utf8 Hello_World.java

А теперь давайте запустим наше приложение:


java Hello_World


Вуаля наш результат:

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#3 
uscheswoi_82 коренной житель17.07.23 23:51
17.07.23 23:51 
в ответ uscheswoi_82 17.07.23 15:09

Давайте же изменим 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;
class Hello_World extends JFrame implements ActionListener{
  public Hello_World() {
    setTitle("Простое приложение"); // Заголовок окна Простое приложение
    setSize(640, 480); // Размер окна 640x480
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // При закрытие приложение закроется
    JMenuBar bar = new JMenuBar(); // Добавляем менюшки
    JMenu mnuFile = new JMenu("Файл"); // Добавляем горизонтальное меню Файл
    mnuFile.setMnemonic('Ф'); 
    JMenuItem popupExit = new JMenuItem("Выход"); // Добавляем вертикальное меню Выход
    popupExit.setMnemonic('В');
    popupExit.addActionListener(this); // Устанавливаем событие, говорим что обработчик этот класс
    mnuFile.add(popupExit); // Добавляем вертикальное меню в горизонтальное
    bar.add(mnuFile); // Добавляем горизонтальное меню в вертикальное меню
    setJMenuBar(bar); // Добавляем менюшки в окно
    setVisible(true); // Отображаем окно
  }
  public static void main(String[] args) {
    new Hello_World();
  }
  public void actionPerformed(ActionEvent e){
    System.exit(0); // Если нажали на Файл->Выход, то закрываем приложение
  }
}


Давайте откомпилируем Hello_World.java:

javac -encoding utf8 hello_world.java


Запустим наше приложение:

java Hello_World


Если нажать на выход, теперь наше приложение закроется.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#4 
uscheswoi_82 коренной житель07.08.23 03:48
NEW 07.08.23 03:48 
в ответ uscheswoi_82 17.07.23 23:51

Теперь добавим иконку. Добавим следующую строку:

import java.awt.Toolkit;


и ещё добавим:

    setTitle("Простое приложение"); // Заголовок окна Простое приложение 
    setSize(640, 480); // Размер окна 640x480
    setIconImage(Toolkit.getDefaultToolkit().getImage("icon.png")); // Иконка


Полный код 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;
class Hello_World extends JFrame implements ActionListener{
  public Hello_World() {
    setTitle("Простое приложение"); // Заголовок окна Простое приложение
    setSize(640, 480); // Размер окна 640x480
    setIconImage(Toolkit.getDefaultToolkit().getImage("icon.png")); // Иконка
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // При закрытие приложение закроется
    JMenuBar bar = new JMenuBar(); // Добавляем менюшки
    JMenu mnuFile = new JMenu("Файл"); // Добавляем горизонтальное меню Файл
    mnuFile.setMnemonic('Ф'); 
    JMenuItem popupExit = new JMenuItem("Выход"); // Добавляем вертикальное меню Выход
    popupExit.setMnemonic('В');
    popupExit.addActionListener(this); // Устанавливаем событие, говорим что обработчик этот класс
    mnuFile.add(popupExit); // Добавляем вертикальное меню в горизонтальное
    bar.add(mnuFile); // Добавляем горизонтальное меню в вертикальное меню
    setJMenuBar(bar); // Добавляем менюшки в окно
    setVisible(true); // Отображаем окно
  }
  public static void main(String[] args) {
    new Hello_World();
  }
  public void actionPerformed(ActionEvent e){
    System.exit(0); // Если нажали на Файл->Выход, то закрываем приложение
  }
}


Теперь давайте нарисуем такую иконку X в Paint-е:


1. Запустим программу Paint:


2. Нажмём Strg+E и измен размер картинки 32 на 32:




3. Нарисуем букву X:


4. Сохраним как png, имя файла должно быть icon.png:


5. Теперь откомпилируем Hello_World.java:

javac -encoding utf8 hello_world.java


6. И запустим:

java Hello_World


7. Вуаля вот и результат:



Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#5 
uscheswoi_82 коренной житель08.09.23 01:02
NEW 08.09.23 01:02 
в ответ uscheswoi_82 07.08.23 03:48

Теперь улучшим нашу программу, добавим панельку toolbar. Итак погнали. Панельку toolbar я буду иметь ввиду что это панель управления. Подключим библиотеки:

import javax.swing.JButton;
import java.awt.BorderLayout;
import javax.swing.JToolBar;


Изменим код:

class Hello_World extends JFrame implements ActionListener{
  JMenuItem popupExit;
  JButton btnDemo;


Добавим код:

setLayout(new BorderLayout()); // Добавим BorderLayout
JToolBar toolbar = new JToolBar("Главная панель"); // Добавляем панельку Toolbar, и добавляем названия панельки
toolbar.setFloatable(true); // Стиль панельки toolbar - подвижная
toolbar.setRollover(true); // визуально указать на кнопки на панельки toolbar, когда пользователь передает по ним с курсором
btnDemo = new JButton("Выход"); // Добавляем кнопку с названием выход
toolbar.add(btnDemo);
add(toolbar, BorderLayout.NORTH);


Изменим код:

public void actionPerformed(ActionEvent e){
    if(e.getSource() == popupExit || e.getSource() == btnDemo)
      System.exit(0); // Если нажали на Файл->Выход или на кнопку на панели выход, то закрываем приложение
  }


Полный код:

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;
class Hello_World extends JFrame implements ActionListener{
  JMenuItem popupExit;
  JButton btnDemo;
  public Hello_World() {
    setTitle("Простое приложение"); // Заголовок окна Простое приложение
    setSize(640, 480); // Размер окна 640x480
    setIconImage(Toolkit.getDefaultToolkit().getImage("icon.png")); // Иконка
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // При закрытие приложение закроется
    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 - подвижная 
    toolbar.setRollover(true); // визуально указать на кнопки на панельки toolbar, когда пользователь передает по ним с курсором
    btnDemo = new JButton("Выход"); // Добавляем кнопку с названием выход
    toolbar.add(btnDemo); // Добавляем кнопку в панельку toolbar
    add(toolbar, BorderLayout.NORTH); // Добавляем панельку toolbar в окно, говорим что панелька будет вверху 
    setVisible(true); // Отображаем окно
  }
  public static void main(String[] args) {
    new Hello_World();
  }
  public void actionPerformed(ActionEvent e){
    if(e.getSource() == popupExit || e.getSource() == btnDemo)
      System.exit(0); // Если нажали на Файл->Выход или на кнопку на панели выход, то закрываем приложение
  }
}


Теперь откомпилируем нашу программу и запустим:

Компиляция:

javac -encoding utf8 Hello_World.java


Запуск:

java Hello_World


Вуаля! Вот результат работы нашей программы:

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#6 
uscheswoi_82 коренной житель08.09.23 01:11
NEW 08.09.23 01:11 
в ответ uscheswoi_82 08.09.23 01:02

Теперь давайте улучшим наш код, и добавим в панель управления (панелька toolbar) иконочку, будем добавлять эту иконку в нашу панельку:



Добавим библиотеки:

import javax.swing.ImageIcon;
import javax.imageio.ImageIO;


Добавим картинку в кнопку:

// Обработчик исключения
try {
      btnExit.setIcon(new ImageIcon(ImageIO.read(getClass().getResource("icon.png")))); // Добавляем иконку (картинку) в кнопку btnExit
    }
    catch(Exception ex) {}


Полный код:

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;

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.EXIT_ON_CLOSE); // При закрытие приложение закроется
    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(); // Добавляем кнопку 
    // Обработчик исключения
    try {
      btnExit.setIcon(new ImageIcon(ImageIO.read(getClass().getResource("icon.png")))); // Добавляем иконку (картинку) в кнопку btnExit
    }
    catch(Exception ex) {} 


    toolbar.add(btnExit);
    add(toolbar, BorderLayout.NORTH);
    setVisible(true); // Отображаем окно
  }
  public static void main(String[] args) {
    new Hello_World();
  }
  public void actionPerformed(ActionEvent e){
    if(e.getSource() == popupExit || e.getSource() == btnExit)
      System.exit(0); // Если нажали на Файл->Выход или на кнопку на панели выход, то закрываем приложение
  }
}


Теперь откомпилируем:

javac -encoding utf8 Hello_World.java


И запустим:

java Hello_World

Вуаля вот и результат:

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#7 
uscheswoi_82 коренной житель08.09.23 02:01
NEW 08.09.23 02:01 
в ответ uscheswoi_82 08.09.23 01:11

Теперь давайте нарисуем свою иконку, дверь:

1. Нарисуем дверь в Microsoft Pain:

2. Сохраним как button_exit.png

3. Сделаем прозрачный PNG:

3.1. Запустим Corel PaintShop Photo Pro:


3.2. Чтобы сохранить прозрачный PNG, нажмём на Exportieren->PNG-Optimierung...:



3.3. Укажем что белый цвет это прозрачный:




3.3. Сохраним как button_exit.png:


Вот сама картиночка:


4. Теперь изменим код:

btnExit.setIcon(new ImageIcon(ImageIO.read(getClass().getResource("button_exit.png")))); // Добавляем иконку (картинку) в кнопку btnExit


5. Теперь откомпилируем код, и запустим программу. Вуаля дверка на кнопки:

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#8 
uscheswoi_82 коренной житель08.09.23 03:17
NEW 08.09.23 03:17 
в ответ uscheswoi_82 08.09.23 02:01

Ошибку допустил, я совсем забыл поставить обработчик события на панельку, чтобы срабатывало событие при нажатие на кнопку дверь, нужно добавить код:

btnExit = new JButton(); // Добавляем кнопку 
btnExit.addActionListener(this); // Добавляем событие, при нажатие мышью на кнопку
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#9 
uscheswoi_82 коренной житель08.09.23 03:42
NEW 08.09.23 03:42 
в ответ 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(); // Выходим
    }
  }
}
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#10 
uscheswoi_82 коренной житель08.09.23 05:05
NEW 08.09.23 05:05 
в ответ uscheswoi_82 08.09.23 03:42, Последний раз изменено 08.09.23 05:27 (uscheswoi_82)

Давайте улучшим год, и нарисуем прозрачный круг красного цвета:


Подключим библиотеку:

import java.awt.Graphics;
import javax.swing.JPanel;
import java.awt.Color;


Добавим в код класс DrawPanel:

class DrawPanel extends JPanel {
    // Событие рисования
    public void paintComponent(Graphics g) {
      super.paintComponent(g); // Передаём чтобы перерисовалось
      g.setColor(Color.RED); // Устанавливаем красные линии
      g.drawArc(10, 10, 100, 100, 0, 360); // Рисуем окружность красного цвета, но с прозрачным фоном
    }
  }


Вызовим наш класс DrawPanel:

DrawPanel panel = new DrawPanel();
add(panel);
setVisible(true); // Отображаем окно


Полный код 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;
import java.awt.Graphics;
import javax.swing.JPanel;
import java.awt.Color;

class Hello_World extends JFrame implements ActionListener {
  JMenuItem popupExit;
  JButton btnExit;

  class DrawPanel extends JPanel {
    // Событие рисования
    public void paintComponent(Graphics g) {
      super.paintComponent(g); // Передаём чтобы перерисовалось
      g.setColor(Color.RED); // Устанавливаем красные линии
      g.drawArc(10, 10, 100, 100, 0, 360); // Рисуем окружность красного цвета, но с прозрачным фоном
    }
  }

  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);
    DrawPanel panel = new DrawPanel();
    add(panel);
    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(); // Выходим
    }
  }
}
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#11 
uscheswoi_82 коренной житель08.09.23 05:13
NEW 08.09.23 05:13 
в ответ uscheswoi_82 08.09.23 05:05

Результат работы нашей программы:

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#12