JTabbedPane — панель вкладок на Java Swing

jtabbedpane панель вкладок В распоряжении библиотеки Java Swing есть некоторые компоненты, которые благодаря особенностям своего устройства позволяют экономить место на форме. Одним из таких компонентов является JTabbedPane — панель вкладок Java Swing. Реализация панели вкладок JTabbedPane — идея не новая, то тем не менее давайте посмотрим, каким образом можно создать панель, добавить на неё все необходимые вкладки, настроить их должным образом, а затем созерцать созданное. Попробуем написать тестовое приложение, на фрейме которого будет располагаться панель вкладок JTabbedPane с несколькими вкладками. Вкладки на JTabbedPane можно будет динамически добавлять и удалять с помощью кнопок, расположенных выше.

Работать с JTabbedPane очень просто. Для добавления новой вкладки на панель используется метод addTab, а для удаления — removeTabAt. При добавлении новой вкладки необходимо передать строку, которая будет являться заголовком вкладки, то есть отображаться на самом ярлычке. Кроме этого вторым параметром необходимо указать панель или контейнер, который будет располагаться уже на самой вкладке. Чтобы удалить вкладку достаточно знать индекс вкладки JTabbedPane, которую хотим удалить.

Давайте посмотрим тестовый пример и всё сразу станет понятно. Думаю писать что-то больше излишне.


import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

public class TestFrame extends JFrame {

	static int i = 0;

	public TestFrame() {

		super("Тестовое окно");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		Font font = new Font("Verdana", Font.PLAIN, 10);
		final JTabbedPane tabbedPane = new JTabbedPane();
		tabbedPane.setFont(font);

		JPanel content = new JPanel();
		content.setLayout(new BorderLayout());

		JPanel buttons = new JPanel();
		content.add(buttons, BorderLayout.NORTH);

		JButton add = new JButton("Добавить");
		add.setFont(font);
		add.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				tabbedPane.addTab("Вкладка " + i++, new JPanel());
			}
		});
		buttons.add(add);

		JButton remove = new JButton("Удалить");
		remove.setFont(font);
		remove.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int select = tabbedPane.getSelectedIndex();
				if (select >= 0) {
					tabbedPane.removeTabAt(select);
				}
			}
		});
		buttons.add(remove);

		content.add(tabbedPane, BorderLayout.CENTER);

		getContentPane().add(content);

		setPreferredSize(new Dimension(260, 220));
		pack();
		setLocationRelativeTo(null);
		setVisible(true);
	}

	public static void main(String[] args) {
		javax.swing.SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				JFrame.setDefaultLookAndFeelDecorated(true);
				new TestFrame();
			}
		});
	}
}
Advertisements

4 Responses to JTabbedPane — панель вкладок на Java Swing

  1. Faust says:

    Спасибо! Урок очень помог в реализации одной программки

  2. Вячеслав says:

    Спасибо большое! Помогли!

  3. tata says:

    А у меня вопрос: я скопировала ваш код и после запуска вставила большое количество вкладок (в 2-3 строчки) и после попыталась выбрать какую-нибудь из последних вкладок 2-го или 3-го ряда. В результате содержимое этих вкладок не отображается, а только выделяется сам заголовок вкладки. Как это исправить?

    • andrew,coder@yandex.ru says:

      посмотрите на код добавления вкладки — строка 34 и 45. new JPanel() создаст ПУСТУЮ вкладку без контента. На заголовок клюкнули — выделилась вкладка. Если бы там было содержимое, то оно отобразилось бы. Попробуйте до 35 строки вставить в вкладку метку (JLabel) с текстом из цикла, как и имя вкладки. И наступит прояснение алгоритма 🙂

      (c) Отцы-Основатели гуру-кода с++ .

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: