【问题标题】:How to use JTabbedPane inside JPanel?如何在 JPanel 中使用 JTabbedPane?
【发布时间】:2015-08-09 05:47:49
【问题描述】:

我的程序需要有一个 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);

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

【问题讨论】:

标签: java swing jpanel jtabbedpane


【解决方案1】:

我给你写了一个例子

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();
}
}

结果如下图

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

【讨论】:

  • 1) Swing 和 AWT GUI 应该在 EDT 上启动。 2) 比this.setSize(300,400); 更好,建议在JTextArea 构造函数和pack() 框架中设置行和列的大小,然后再将其设置为可见。 3)我怀疑这与滚动窗格有很大关系。 4)漂亮的截图。 :)
  • this.setSize(300,400); this.pack(); O_o 你试过了吗?据我所知,它应该再次将框架缩小到小。如果包装一个框架(是的,我们应该),尺寸需要由组件(和边框)建议,最好这样做(在这个case) 通过指定文本区域的列和行..
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 2012-02-16
    相关资源
    最近更新 更多