[Java swing] JTabbedPane trong Java

Bạn đã dùng notepad++ hoặc chính bạn đang dùng eclipse, netbean để code java và bạn thấy chúng có nhiều tab khác nhau. Bài viết này chúng ta sẽ tìm hiểu JTabbedPane, một thành phần cho phép bạn tạo ra nhiều tab như vậy.

JTabedbPane trong Java

Tạo JTabbedPane đơn giản

Hãy xem đoạn code dưới đây để làm demo đơn giản như hình trên, trong code mình đã giải thích tương đối rõ. Bên dưới code mình sẽ nói thêm một chút về JTabbedPane.

package nguyenvanquan7826.JTabbedPane;

import java.awt.Color;
import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;

/**
 * ----------------- @author nguyenvanquan7826 -----------------
 * ---------------nguyenvanquan7826.wordpress.com --------------
 */
public class DemoJTabbedPane extends JFrame {

	public DemoJTabbedPane() {
		createGUI();
		setDisplay();
	}

	/**
	 * set display for JFrame
	 */
	private void setDisplay() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pack();
		setLocationRelativeTo(null);
		setVisible(true);
	}

	/**
	 * add JTabbedPane into JFrame
	 */
	private void createGUI() {
		add(createTabbedPane());
	}

	/**
	 * create a JTabbedPane contain three tab
	 */
	private JTabbedPane createTabbedPane() {
		JTabbedPane tabbedPane = new JTabbedPane();

		/* create three JPanel, which is content of tabs */
		JPanel panel1 = createPane1();
		JPanel panel2 = createJPanel("content of panel 2");
		JPanel panel3 = createJPanel("content of panel 3");

		/* add three tab with three JPanel */
		tabbedPane.addTab("Tab 1", null, panel1, "click to show panel 1");
		tabbedPane.addTab("Tab 2", null, panel2, "click to show panel 2");
		tabbedPane.addTab("Tab 3", null, panel3, "click to show panel 3");

		return tabbedPane;
	}

	/**
	 * create JPanel 1 contain a JTextArea
	 */
	private JPanel createPane1() {
		JPanel panel = new JPanel();
		panel.add(new JScrollPane(createTextArea(10, 40)));
		return panel;
	}

	/**
	 * create a JPanel contain a JLabel
	 */
	private JPanel createJPanel(String text) {
		JPanel panel = new JPanel(new GridLayout(1, 1));
		JLabel lb = new JLabel(text);
		lb.setHorizontalAlignment(JLabel.CENTER);
		panel.add(lb);
		return panel;
	}

	/**
	 * create a JTextArea with rows and columns, two method setWrapStyleWord and
	 * setLineWrap make text can down line when text too long
	 */
	private JTextArea createTextArea(int row, int col) {
		JTextArea ta = new JTextArea(row, col);
		ta.setWrapStyleWord(true);
		ta.setLineWrap(true);
		ta.setForeground(Color.BLUE);
		return ta;
	}

	public static void main(String[] args) {
		new DemoJTabbedPane();
	}
}

Trong code trên hầu hết các phương thức về JPanel, JLabel, JTextArea,… mình đều nêu ở các bài trước. Điểm chú ý ở đây là phương thức khởi tạo JTabbedPane. Chúng ta có một số phương thức khởi tạo sau:

JTabbedPane(): Tạo một JTabbedPane trống với mặc định các tab ở trên đầu
JTabbedPane(int tabPlacement): Tạo một JTabbedPane trống với nơi đặt tab ở trên (JTabbedPane.TOP), dưới(JTabbedPane.BOTTOM), trái (JTabbedPane.LEFT), phải (JTabbedPane.RIGHT).
JTabbedPane(int tabPlacement, int tabLayoutPolicy):Tạo JTabbenPane trống và quy định vị trí đặt tab, cách thức sắp xếp tab: các tab cuộn (SCROLL_TAB_LAYOUT) hoặc xếp đè lên nhau (WRAP_TAB_LAYOUT) khi kích thước không đủ.

Sau khi tạo được JTabbedPane, ta thực hiện thêm các thành phần vào để tạo nên các tab. Ở trên mỗi tab chứa 1 JPanel có nội dung nhất định. Phương thức addTab với các thông số lần lượt là tên tab, icon tab, thành phần hiển thị (ở trên là JPanel) và cuối cùng là tool tip text (hiển thị khi đưa chuột vào tab).

Đọc thêm: class JTabbedPane, use JTabbedPane, Java swing
Đọc bản tiếng anh tại đây.