按钮的位置转到一个奇怪的位置 (SpringLayout)
Location of the buttons go to a strange location (SpringLayout)
我正在制作一个 java 应用程序,您可以在其中通过表单添加新帐户,我正在为其使用 SpringLayout,因为它看起来很整洁,但是在添加带有文本的 JTextFields 之后,按钮留在左上角,而它不应该出现在那里,我正在使用 SpringUtilities
(https://docs.oracle.com/javase/tutorial/uiswing/examples/layout/SpringGridProject/src/layout/SpringUtilities.java)
package dinges.Containers;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SpringLayout;
import dinges.Utilities.SpringUtilities;
@SuppressWarnings("serial")
public class Addnew extends JPanel {
String[] options = {"User", "Accountant", "Administrator", "Developer"};
/**
* > Add a text input for the following:
* > Id, Name, last name, current balance, and the state. But this has to be in order of the new Account.
* > we're just going to be using JTextFields, a JButton for saving and JLabels for writing what it is
*
**/
public Addnew() {
// frame size is WIDTH = 280 , HEIGHT = 480
SpringLayout layout = new SpringLayout();
setLayout(layout);
JButton save = new JButton("Save data");
JTextField name = new JTextField(15);
JTextField lastname = new JTextField(15);
JComboBox<String> accounttype = new JComboBox<String>(options);
JLabel label1 = new JLabel("First name: ", JLabel.TRAILING);
JLabel label2 = new JLabel("Last name: ", JLabel.TRAILING);
JLabel label3 = new JLabel("Account type: ", JLabel.TRAILING);
JLabel label4 = new JLabel("Save data: ", JLabel.TRAILING);
label1.setLabelFor(name);
label2.setLabelFor(lastname);
label3.setLabelFor(accounttype);
add(label1);
add(name);
add(label2);
add(lastname);
add(label3);
add(accounttype);
add(save);
add(label4);
SpringUtilities.makeCompactGrid(this, 3, 2, 6, 6, 6, 6);
}
}
这使它看起来像这样:
但该按钮应位于 JComboBox 下方,其 JLabel 的位置应与其他按钮一样。
这里的问题在哪里?我已经换了一段时间了,但我真的找不到它。
the button stays at the left top
应该在哪里?
我猜它应该在底部,但您应该将其指定为问题的一部分,因为我们不是读者,也不知道您在想什么。
i am using SpringUtilities
你告诉 SpringUtilities 你需要多少 rows/columns 了吗?
那是你修改了demo代码中的参数还是直接复制了demo代码不改?
您似乎没有正确设置正确的行数
// SpringUtilities.makeCompactGrid(p, rows, cols, initX, initY, xPad, yPad);
int numPairs = options.length; // 4
SpringUtilities.makeCompactGrid(p, numPairs, 2, 6, 6, 6, 6);
我正在制作一个 java 应用程序,您可以在其中通过表单添加新帐户,我正在为其使用 SpringLayout,因为它看起来很整洁,但是在添加带有文本的 JTextFields 之后,按钮留在左上角,而它不应该出现在那里,我正在使用 SpringUtilities (https://docs.oracle.com/javase/tutorial/uiswing/examples/layout/SpringGridProject/src/layout/SpringUtilities.java)
package dinges.Containers;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SpringLayout;
import dinges.Utilities.SpringUtilities;
@SuppressWarnings("serial")
public class Addnew extends JPanel {
String[] options = {"User", "Accountant", "Administrator", "Developer"};
/**
* > Add a text input for the following:
* > Id, Name, last name, current balance, and the state. But this has to be in order of the new Account.
* > we're just going to be using JTextFields, a JButton for saving and JLabels for writing what it is
*
**/
public Addnew() {
// frame size is WIDTH = 280 , HEIGHT = 480
SpringLayout layout = new SpringLayout();
setLayout(layout);
JButton save = new JButton("Save data");
JTextField name = new JTextField(15);
JTextField lastname = new JTextField(15);
JComboBox<String> accounttype = new JComboBox<String>(options);
JLabel label1 = new JLabel("First name: ", JLabel.TRAILING);
JLabel label2 = new JLabel("Last name: ", JLabel.TRAILING);
JLabel label3 = new JLabel("Account type: ", JLabel.TRAILING);
JLabel label4 = new JLabel("Save data: ", JLabel.TRAILING);
label1.setLabelFor(name);
label2.setLabelFor(lastname);
label3.setLabelFor(accounttype);
add(label1);
add(name);
add(label2);
add(lastname);
add(label3);
add(accounttype);
add(save);
add(label4);
SpringUtilities.makeCompactGrid(this, 3, 2, 6, 6, 6, 6);
}
}
这使它看起来像这样:
但该按钮应位于 JComboBox 下方,其 JLabel 的位置应与其他按钮一样。
这里的问题在哪里?我已经换了一段时间了,但我真的找不到它。
the button stays at the left top
应该在哪里?
我猜它应该在底部,但您应该将其指定为问题的一部分,因为我们不是读者,也不知道您在想什么。
i am using SpringUtilities
你告诉 SpringUtilities 你需要多少 rows/columns 了吗?
那是你修改了demo代码中的参数还是直接复制了demo代码不改?
您似乎没有正确设置正确的行数
// SpringUtilities.makeCompactGrid(p, rows, cols, initX, initY, xPad, yPad);
int numPairs = options.length; // 4
SpringUtilities.makeCompactGrid(p, numPairs, 2, 6, 6, 6, 6);