Java/Библиотека Swing

Материал из Викиучебника — открытых книг для открытого мира

Начало[править]

import javax.swing.*; // библиотека графических компонентов
public class Alarm {
    public static void main(String[] args) {
        JFrame frame = new JFrame("FrameDemo"); // создаём главное окно приложения
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // чтобы процесс завершался после закрытия окна
        JButton button1 = new JButton("Button 1"); // создаём кнопку
        frame.add(button1); // добавляем кнопку на окно
        frame.pack(); // автоматически настраиваем размер окна под содержимое
        frame.setVisible(true); // отображаем окно
    }
}

кнопка JButton[править]

...
import java.awt.event.*; // импортируем интерфейс ActionListener
class MainFrame extends JFrame implements ActionListener{
	@Override
	public void actionPerformed(ActionEvent e){ // функция, в которой обрабатываются события всех кнопок
		String command = e.getActionCommand();
		if( command.equals( "add" ))  {
			dispose();
			System.exit(0);
		}
	}
	public JPanel createMainPanel(){
		JButton addBtn = new JButton("Добавить будильник");
		addBtn.setActionCommand("add");
		addBtn.addActionListener(this); // указываем объект, реализующий интерфейс ActionListener,
						// и в котором определён обработчик событий actionPerformed
		...
	}

таблица JTable[править]

        Object rowData[][] = {
            { "1 1", "1 2", "1 3" },
            { "2 1", "2 2", "2 3" }
        };
        Object columnNames[] = { "Колонка 1", "Колонка 2", "Колонка 3" };
        JTable table = new JTable(rowData, columnNames);
        frame.add(table);

Контейнеры и разметки[править]

Чтобы разместить на главном окне несколько элементов нужно использовать панели и разметки.

        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.PAGE_AXIS));
        mainPanel.add(btn);
        mainPanel.add(table); 
        frame.add(mainPanel);


JFrame[править]

заменить панель на фрейме
		frame.remove(mainPanel);
		frame.add(otherPanel);
		frame.invalidate();
		frame.validate();