Java Spring布局中组件之间的空间过大
我想手工创建一个JFrame,并使用spring布局来实现这一点。但是,我的最终输出不好。我的行和单选按钮之间的空间太大了: 我的代码:Java Spring布局中组件之间的空间过大,java,swing,layout-manager,springlayout,Java,Swing,Layout Manager,Springlayout,我想手工创建一个JFrame,并使用spring布局来实现这一点。但是,我的最终输出不好。我的行和单选按钮之间的空间太大了: 我的代码: public final class NewUserFrame1 extends JFrame { public NewUserFrame1() { add(rowComponent(), BorderLayout.CENTER); setLocation(200, 40); setDefaultCloseOperation(JFr
public final class NewUserFrame1 extends JFrame {
public NewUserFrame1() {
add(rowComponent(), BorderLayout.CENTER);
setLocation(200, 40);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
pack();
}
public JPanel rowComponent() {
JPanel panel = new JPanel();
JLabel fnamelbl = new JLabel("First name");
JLabel lnamelbl = new JLabel("Last Name");
JLabel fntemp = new JLabel();
JLabel lntemp = new JLabel();
JTextField fntf = new JTextField(10);
JTextField lntf = new JTextField(10);
JLabel gndlnl = new JLabel("Gender");
JRadioButton malerb = new JRadioButton("Male");
JRadioButton femalerb = new JRadioButton("Female");
ButtonGroup bgroup = new ButtonGroup();
bgroup.add(malerb);
bgroup.add(femalerb);
JLabel registnm = new JLabel("Registration ID is:");
JLabel showreglbl = new JLabel();
JLabel regtemp = new JLabel();
panel.add(fnamelbl);
panel.add(fntf);
panel.add(fntemp);
panel.add(lnamelbl);
panel.add(lntf);
panel.add(lntemp);
panel.add(gndlnl);
panel.add(malerb);
panel.add(femalerb);
panel.add(registnm);
panel.add(showreglbl);
panel.add(regtemp);
panel.setLayout(new SpringLayout());
SpringUtilities.makeCompactGrid(panel, 4, 3, 50, 15, 3, 4);
return panel;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
NewUserFrame1 newUserFrame1 = new NewUserFrame1();
}
});
}
}
现在:
SpringUtilities.makeCompactGrid(panel, 4, 3, 50, 15, 3, 10);
但仍然-标签将是高等,但这是一个不同的问题。继续使用面板的大小和组件的大小
如果是单选按钮-更改
panel.add(malerb);
panel.add(femalerb);
例如:
JPanel radioPanel = new JPanel();
radioPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
radioPanel.add(malerb);
radioPanel.add(femalerb);
panel.add(radioPanel);
panel.add(new JLabel());
最后一行是必需的,因为您声明布局有3列。而不是在
NewUserFrame1
构造函数中调用setSize
callpack
onJFrame
public NewUserFrame1() {
add(rowComponent(), BorderLayout.CENTER);
setLocation(200, 40);
//setSize(800, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
pack();
}
还可以通过以下方式更改SpringUtilities.makeCompactGrid
方法的参数:
SpringUtilities.makeCompactGrid(panel, 4, 3, 50, 15, 3, 4);//change yPad to 4 instead of 100. It sets the vertical height between two rows
@垃圾神我应该在哪里使用pack方法?在封闭的
窗口上
。您的java版本是什么?使用pack方法后,我的问题解决了,但是我的主窗口太小了好的..如果你想增加宽度和高度,你应该增加xPad
和yPad
一点..并用新的值继续测试,直到你得到你想要的大小。一个问题:什么时候应该使用pack方法而不是setSize方法?如果你想增加你的窗口的宽度textfields
调用JTextField
的构造函数时,将其称为新的JTextField(30)
(或多个整数值)一个问题:什么时候应该使用pack方法而不是setSize方法?