如何在 JPanel 中使用 JTabbedPane?

How to use JTabbedPane inside JPanel?

我的程序需要有一个 JTextArea,在 JTabbedPane 内滚动,JTabbedPane 保持在 JPanel 内。以下是我测试过的一段代码。

private JTabbedPane jtab;
private JScrollPane jsp;
private JTextArea jtxta;

jtab = new JTabbedPane();
jtxta = new JTextArea();
jsp = new JScrollPane(jtxta);

jtab.addTab("[Untitle]", jsp);
main_jpn.add(jtab);

getContentPane().add(main_jpn, BorderLayout.CENTER);

但是程序运行时没有任何显示。我的程序需要什么?

确保 main_jpn 和父组件的布局设置为 BorderLayout。

    JPanel main_jpn = new JPanel(new BorderLayout());
    setLayout(new BorderLayout());

我给你写了一个例子

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;

public class Solution extends JFrame {

private static final long serialVersionUID = 1L;
private JTabbedPane jtab;
private JScrollPane jsp;
private JTextArea jtxta;

public Solution() {
    jtab = new JTabbedPane();
    jtxta = new JTextArea();
    jsp = new JScrollPane(jtxta);
    jtab.addTab("[Untitle]", jsp);
    jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    getContentPane().add(jtab, BorderLayout.CENTER);
    this.setSize(300,400);
    this.pack(); 
    this.setVisible(true);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

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

结果如下图

最重要的是你需要设置滚动策略,保持滚动一直显示。