我正在尝试设计一个布局,在框架顶部使用 JTabbedPane,然后在选项卡式窗格下方使用 jLogArea。
我正在使用这段代码:
setLayout(new BorderLayout());
tabbedPane.setSize(WIDTH, HEIGHT);
add(tabbedPane, BorderLayout.PAGE_START);
tabbedPane.add("Tab 0", null);
scrollableTextArea = new JScrollPane(jTextArea);
jTextArea.setEditable(false);
jTextArea.setLineWrap(true);
scrollableTextArea.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollableTextArea.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
add(scrollableTextArea, BorderLayout.PAGE_END);
但是,这样做的结果是文本区域被放置在选项卡式窗格的后面:
有谁知道我做错了什么以及如何解决?谢谢。
编辑:为了清楚起见,我正在寻找位于 JTabbedPane 下方的文本区域,而不是在选项卡本身中。
使用BorderLayout.NORTH
andBorderLayout.SOUTH
也无济于事。我在选项卡的内容中添加了一个标签,只是为了看看这是否会有所不同,但文本区域仍然落后,这就是它的外观:
进一步的代码(类 extends JFrame
):
public MainGUI() {
init();
pack();
super.setTitle("test");
}
public void init() {
setLayout(new BorderLayout());
setPreferredSize(new Dimension(WIDTH, HEIGHT + TEXT_AREA_HEIGHT));
setMaximumSize(new Dimension(WIDTH, HEIGHT + TEXT_AREA_HEIGHT));
setMinimumSize(new Dimension(WIDTH, HEIGHT + TEXT_AREA_HEIGHT));
tabbedPane = new JTabbedPane();
textArea = new JTextArea(WIDTH, TEXT_AREA_HEIGHT);
scrollableTextArea = new JScrollPane(textArea);
JLabel testLabel = new JLabel("Test!");
tabbedPane.add("Tab 0", testLabel);
tabbedPane.setBorder(null);
tabbedPane.setSize(WIDTH, HEIGHT);
add(tabbedPane, BorderLayout.NORTH);
textArea.setEditable(false);
textArea.setLineWrap(true);
scrollableTextArea.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollableTextArea.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
add(scrollableTextArea, BorderLayout.SOUTH);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
}