Java Eclipse пример оконного приложения - создание окна, задание размеров, добавление надписей и кнопок, вывод сообщения

Далее пример урока 8 по программированию на Java.

Это пример содержит 5 классов (в проекте вам надо будет создать пять классов), предварительно создав два пакета пакета.

пакет TestForm

Этот пакет содержит два класса.

класс FormStart (создаёт "рамку", задаёт её размеры и запрашивает холст):

//IT FOR FREE
//fkn.ktu10.com; Онлайн-встречи IFF каждый понедельник в 20-20 по мск
//(можно задавать вопросы на сайте или онлайн-встречах)

package TestForm;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class FormStart {
	public static void main(String[] args) {
		 JFrame.setDefaultLookAndFeelDecorated(true); //  устанавливае стандартный внешний вид
         JFrame frame = new JFrame("Здесь заголовок окна"); // желаемый заголовок   
         
         //Далее создаём поверхность (панель) для размещения компонентов 
         MainFormAppearance demo = new MainFormAppearance(); // внешность формы
         frame.setContentPane(demo.createContentPane()); // передаем как параметр в коструктор
         
         // задаём операцию, которая выполниться при закрытии
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setSize(400, 300); // задаём размер окна 
         frame.setVisible(true); //  форма будет видимой
	  } /*  youtube.com/toybattle */
}

класс MainFormAppearance ( в одном своём методе задаёт внешность холста и возвращает ссылку на холст):

package TestForm;

import TestActions.*;

import javax.swing.*; // импортируем SWING
import java.awt.*; // импортируем все подпакеты AWT

import java.awt.event.ActionListener;


// Класс. который будет описывать внешний вид нашей формы
public class MainFormAppearance { 
    public JPanel createContentPane (){
          
        // We create a bottom JPanel to place everything on.
        // сначала создаётся "панель", на которой и размещаюся
    	// остальные компоненты
        JPanel totalGUI = new JPanel(); // создаём "поверхность"
        totalGUI.setLayout(null);
 
       // Создадим ярлык (надпись) синего цвета
        JLabel blueLabel = new JLabel("Какая-то надпись =)");
        blueLabel.setLocation(10, 10); /* надпись синего цвета*/
        blueLabel.setSize(300, 100); // размер области надписи
        blueLabel.setHorizontalAlignment(0);
        blueLabel.setForeground(Color.blue); // задаём цвет 
        totalGUI.add(blueLabel); // добавляем текстовую метку на поверхность
        
        // Создаём кнопку---------------
        JButton redButton = new JButton("Название кнопки 1 :))");
        redButton.setLocation(120, 200); // расположение кнопки
        redButton.setSize(200,50 ); // размер кнопки
        // создаём объект-обработчик события
        ActionListener actionListener = new TestActionListener(); // создаём создаём действие
        // назначаем этот обработчик кнопке
        redButton.addActionListener(actionListener);// прикрепляем действие к кнопке (срабоет по нажатии на неё)
        totalGUI.add(redButton); // добавляем кнопку на поверхность
        
        // Создадим ещё одну кнопку-------------------------
        JButton ParceButton = new JButton("Кнопка 2!");
        ParceButton.setLocation(200, 100); // расположение кнопки
        ParceButton.setSize(100, 30 ); // размер кнопки
        ActionListener ParceListener = new ParceListener(); // создаём создаём действие
        ParceButton.addActionListener(ParceListener);   // прикрепляем действие к кнопке 
        totalGUI.add(ParceButton); // добавляем на поверхность
        
        // 3-я кнопка---------------------------------------
        JButton Button3 = new JButton("Кнопка 3");
        Button3.setLocation(200, 150); // местоположение 
        Button3.setSize(150, 30); // размер
        ActionListener CListener  = new CsvListener(); // создаём создаём действие типа CsvListener
        Button3.addActionListener(CListener);   // прикрепляем действие к кнопке типа CsvListener к кнопке 3   
        totalGUI.add(Button3);
  
  
          
        totalGUI.setOpaque(true);
        return totalGUI; // возвращаем внешний вид
    }
}

Пакет TestActions.

В этом пакете будут расположены 3 класса-действия (действий), которые мы будем "прикреплять" к создаваемым кнопкам (см. класс выше MainFormAppearance)

Класс CsvListener:

package TestActions;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

// действие для кнопки 3
public class CsvListener implements ActionListener { 
    public void actionPerformed(ActionEvent e) {
    	
    		// нет реализации (никаких действий)
    	   //System.exit(1); // если раскомментировать, то будет закрывать программу
         }
    }

класс ParceListener:

package TestActions;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class ParceListener implements ActionListener { // реализация интерфейса
        public void actionPerformed(ActionEvent e) {
        	
            // задаём текст для сообщения
        	String message = "Кнопка 2 нажата=))";
        	// выполняем команду вывода сообщения
                JOptionPane.showMessageDialog(new JFrame(), message, "Message by 2",
                    JOptionPane.ERROR_MESSAGE);
             }
        }


Класс TestActionListener:

package TestActions;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class TestActionListener implements ActionListener { // наследуемся от стандартного класса  ActionListener 
        public void actionPerformed(ActionEvent e) {
          // выведем сообщение из нескольких строк
        	// одну из них в кавычках
            String message = "\"строка 1\"\n"
                    + "строка2\n"
                    + "строка 3";
                JOptionPane.showMessageDialog(new JFrame(), message, "Несколько строк",
                    JOptionPane.ERROR_MESSAGE);
             }
        }