为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 JTabbedPane 中使用布局管理器?

如何在 JTabbedPane 中使用布局管理器?

炎炎设计 2021-10-28 09:27:06
我正在尝试制作 3 个选项卡,在每个选项卡中,我有一个文本字段和多个按钮和复选框以及一个大文本区域。问题是,当我尝试同时使用 GridBagLayout或GridLayoutwithJTabbedPane时,它要么不显示任何内容,要么将所有三个选项卡都放在中间的一个小框中。不知道能不能一起用?但是我想使用某种布局来设置顶部的文本,然后在每个选项卡的中间使用按钮,在选项卡的底部JTextArea设置流输出。
查看完整描述

2 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

JPanel jp1 = new JPanel();

JPanel jp2 = new JPanel();

JPanel jp3 = new JPanel();



setLayout(new GridBagLayout());

上面的代码是为frame设置布局管理器,这不是你想做的。


面板的默认布局管理器是 FlowLayout(因为您没有指定布局管理器)。


您要为每个面板设置布局管理器:


JPanel jp1 = new JPanel( pick a layout manager);

JPanel jp2 = new JPanel( pick a layout manager);

JPanel jp3 = new JPanel( pick a layout manager);


//setLayout(new GridBagLayout());

因此,您添加到选项卡的每个面板都可以有不同的布局管理器来实现您想要的布局。您还可以使用不同的布局管理器嵌套面板,以提供更大的灵活性。


每个选项卡的布局完全独立于其他选项卡。唯一的关系是所有选项卡共享相同的空间,因此选项卡式窗格的首选大小将是最大选项卡的首选大小。


但是我想使用某种布局来设置顶部的文本,然后在每个选项卡的中间使用按钮,在选项卡的底部有 Jtextarea 用于流输出。任何帮助将不胜感激。这是我的代码:


因此,也许您可以从主面板的 BorderLayout 开始添加到选项卡。然后您可以根据需要创建其他面板以在 BorderLayout 的 PAGE_START、CENTER、PAGE_END 中显示该组件。阅读有关布局管理器的 Swing 教程,了解一些示例以帮助您入门。


编辑:


按照我上面的建议,您可以执行以下操作:


JPanel top = new JPanel( new GridLayout(0, 3) );

top.add( new JLabel("Label1") );

top.add( new JLabel("Label2") );

top.add( new JLabel("Label3") );


JTextArea textArea = new JTextArea(5, 30);


JPanel bottom = new JPanel( new GridLayout(0, 2) );

bottom.add( new JButton("Button1") );

bottom.add( new JButton("Button2") );


JPanel tab1 = new JPanel( new BorderLayout() );

tab1.add(top, BorderLayout.PAGE_START);

tab1.add(new JScrollPane(textArea), BorderLayout.CENTER);

tab1.add(bottom, BorderLayout.PAGE_END);


JTabbedPane tabbedPane = new JTabbedPane();

tabbedPane.addTab("Tab1", tab1);


frame.add(tabbedPane);


查看完整回答
反对 回复 2021-10-28
  • 2 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号