gpt4 book ai didi

java - jpanel无法制作7行2列的gridlayout

转载 作者:太空宇宙 更新时间:2023-11-04 13:13:55 25 4
gpt4 key购买 nike

我想问一下我的代码是否有问题。我已经使用 borderlayout 设置了框架。在中心部分,我想使用 7 行和 2 列的 gridlayout

        paneltengah= new JPanel();
paneltengah.setLayout(new GridLayout(7,2));


labelname = new JLabel(lbl_name,SwingConstants.LEFT);
labelusername = new JLabel(lbl_username,SwingConstants.LEFT);
labelpassword = new JLabel(lbl_password,SwingConstants.LEFT);
labelgender = new JLabel(lbl_gender,SwingConstants.LEFT);
labelemail = new JLabel(lbl_email,SwingConstants.LEFT);
labelhobby = new JLabel(lbl_hobby,SwingConstants.LEFT);
labelrole = new JLabel(lbl_role,SwingConstants.LEFT);

textname = new JTextField(20);
textusername = new JTextField(20);
textpassword = new JPasswordField(20);
textemail = new JTextField(20);
comboboxhobby = new JComboBox();
comboboxrole = new JComboBox();
radiobuttonmale = new JRadioButton("Male");
radiobuttonfemale = new JRadioButton("Female");
ButtonGroup btngroup = new ButtonGroup();
btngroup.add(radiobuttonmale);
btngroup.add(radiobuttonfemale);



paneltengah.add(labelname);
paneltengah.add(labelusername);
paneltengah.add(labelpassword);
paneltengah.add(labelgender);
paneltengah.add(labelemail);
paneltengah.add(labelrole);
paneltengah.add(labelhobby);

//// paneltengah.add(textname); when i open this, the layout become awkward
//// paneltengah.add(textusername);
//// paneltengah.add(textpassword);
//// paneltengah.add(radiobuttonmale);
//// paneltengah.add(radiobuttonfemale);
//// paneltengah.add(comboboxhobby);
//// paneltengah.add(comboboxrole);


pane.add(paneltengah, BorderLayout.CENTER);

不打开评论就显示以下图片

enter image description here

下面的图片是未注释的

enter image description here

我的代码有什么问题吗?

最佳答案

首先,GridLayout 在其关联的 Container 中均匀地调整所有组件的大小,这解释了为什么标签和字段的大小都相同。例如,如果您的 JPanel 中有一个 JTextArea 200 列 × 20 行,那么即使是最小的标签也会占用那么大的空间!

接下来,根据 GridLayout Javadoc,当使用两个非零参数构造 GridLayout 实例时,行数会固定,列数会根据放入父 Container 中的组件数量进行调整。

我建议使用 BorderLayout 来设置主表单布局。将标题放在 NORTH 上,并保留标签和字段的 CENTER(您当前的 JPanel)。

对于标签和字段,最简单的解决方案可能是使用 GridLayout(0, 2) (固定列数)。但所有组件的大小仍然相同。

如果您需要对组件的大小进行更多控制(例如,字段比标签宽),那么我建议使用其他布局管理器,例如 GridBagLayout。我知道管理起来比较复杂,但使用 GridBagLayout 格式化预览实用程序应该会有所帮助。这样的程序可能被命名为类似 GridBagLab (我知道 David Geary 的书 Graphic Java 第 2 卷 — Swing 在其配套 CD 上有一个)。

还有一个 GridBagLayout 教程:https://www.youtube.com/watch?v=Ts5fsHXIuvI .

关于java - jpanel无法制作7行2列的gridlayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33709507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com