23:46
Урок 31: Продвинутые компоненты Swing

Курс по программированию на Java

Урок 31: Продвинутые компоненты Swing

В этом уроке мы рассмотрим использование продвинутых компонентов Swing, таких как таблицы (JTable), деревья (JTree) и вкладки (JTabbedPane). Эти компоненты позволяют создавать более сложные и функциональные графические интерфейсы, которые могут включать в себя отображение больших объемов данных, создание иерархических структур и организацию контента на вкладках.

Использование JTable

JTable используется для отображения табличных данных. Рассмотрим пример создания таблицы:

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class TableExample {
 public static void main(String[] args) {
 JFrame frame = new JFrame("Пример JTable");
 frame.setSize(400, 300);
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 String[][] data = {
 {"1", "Иван", "25"},
 {"2", "Мария", "30"},
 {"3", "Петр", "28"}
 };

 String[] columnNames = {"ID", "Имя", "Возраст"};
 
 JTable table = new JTable(data, columnNames);
 JScrollPane scrollPane = new JScrollPane(table);
 frame.add(scrollPane);

 frame.setVisible(true);
 }
}

Результат выполнения

Откроется окно с таблицей, содержащей данные о трех людях.

Использование JTree

JTree используется для отображения иерархических данных. Пример создания дерева:

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

public class TreeExample {
 public static void main(String[] args) {
 JFrame frame = new JFrame("Пример JTree");
 frame.setSize(400, 300);
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 DefaultMutableTreeNode root = new DefaultMutableTreeNode("Фрукты");
 DefaultMutableTreeNode apple = new DefaultMutableTreeNode("Яблоки");
 DefaultMutableTreeNode banana = new DefaultMutableTreeNode("Бананы");
 DefaultMutableTreeNode orange = new DefaultMutableTreeNode("Апельсины");

 root.add(apple);
 root.add(banana);
 root.add(orange);

 JTree tree = new JTree(root);
 JScrollPane scrollPane = new JScrollPane(tree);
 frame.add(scrollPane);

 frame.setVisible(true);
 }
}

Результат выполнения

Откроется окно с деревом, представляющим иерархию фруктов.

Упражнения

Упражнение 1: Создание таблицы с добавлением данных

Напишите программу, которая создает окно с таблицей и кнопкой "Добавить". При нажатии на кнопку в таблицу должна добавляться новая строка с данными по умолчанию.

Решение:

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class AddRowTableExample {
 public static void main(String[] args) {
 JFrame frame = new JFrame("Таблица с добавлением данных");
 frame.setSize(400, 300);
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 String[] columnNames = {"ID", "Имя", "Возраст"};
 DefaultTableModel model = new DefaultTableModel(columnNames, 0);
 JTable table = new JTable(model);
 JScrollPane scrollPane = new JScrollPane(table);
 
 JPanel panel = new JPanel();
 JButton addButton = new JButton("Добавить");

 addButton.addActionListener(new ActionListener() {
 @Override
 public void actionPerformed(ActionEvent e) {
 model.addRow(new Object[]{"4", "Новый", "20"});
 }
 });

 panel.add(addButton);
 frame.add(scrollPane, "Center");
 frame.add(panel, "South");

 frame.setVisible(true);
 }
}

Объяснение: Программа создает окно с таблицей и кнопкой "Добавить". При нажатии на кнопку в таблицу добавляется новая строка с данными по умолчанию.

Упражнение 2: Создание дерева с добавлением узлов

Напишите программу, которая создает окно с деревом и кнопкой "Добавить узел". При нажатии на кнопку в дерево должен добавляться новый узел с именем "Новый узел".

Решение:

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class AddNodeTreeExample {
 public static void main(String[] args) {
 JFrame frame = new JFrame("Дерево с добавлением узлов");
 frame.setSize(400, 300);
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 DefaultMutableTreeNode root = new DefaultMutableTreeNode("Фрукты");
 DefaultTreeModel model = new DefaultTreeModel(root);
 JTree tree = new JTree(model);
 JScrollPane scrollPane = new JScrollPane(tree);

 JPanel panel = new JPanel();
 JButton addButton = new JButton("Добавить узел");

 addButton.addActionListener(new ActionListener() {
 @Override
 public void actionPerformed(ActionEvent e) {
 DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("Новый узел");
 root.add(newNode);
 model.reload();
 }
 });

 panel.add(addButton);
 frame.add(scrollPane, "Center");
 frame.add(panel, "South");

 frame.setVisible(true);
 }
}

Объяснение: Программа создает окно с деревом и кнопкой "Добавить узел". При нажатии на кнопку в дерево добавляется новый узел с именем "Новый узел".

Категория: Java | Просмотров: 15 | Добавил: Admin | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: