我想问一下我的代码是否有问题。我用borderlayout
设置了框架。在中心部分,我想在gridlayout
中使用7个和2个cols。
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);
在不打开评论的情况下显示以下图片
以下图片显示为取消注释
我的代码出了什么问题?
答案 0 :(得分:0)
首先,GridLayout
会在关联的Container
中均匀地调整所有组件的大小,这就解释了为什么您的标签和字段大小相同。例如,如果JTextArea
中有JPanel
200列×20行,那么即使是最小的标签也会占用那么大的空间!
接下来,根据GridLayout
Javadoc,当GridLayout
实例构造有两个非零参数时,行数得到修复,列数根据数量调整组件放入父Container
。
我建议使用BorderLayout
来设置主表单布局。将标题置于NORTH
,并保留CENTER
标签和字段(您当前的JPanel
)。
对于您的标签和字段,最简单的解决方案可能是使用GridLayout(0, 2)
(固定数量的列)。但是所有组件的大小仍然相同。
如果您需要更多地控制组件的大小(例如,字段比标签更宽),那么我建议您使用其他布局管理器,例如GridBagLayout
。我知道管理起来比较复杂,但使用GridBagLayout
格式化预览实用程序应该有所帮助。这样的程序可以命名为GridBagLab
(我知道David Geary的书图形Java 第2卷 - Swing在其配套CD上有一个)。
https://www.youtube.com/watch?v=Ts5fsHXIuvI还有一个GridBagLayout
教程。