【发布时间】:2014-01-04 03:26:58
【问题描述】:
我有一个 gui,我可以在其中输入值(JTextField - 声明了新组件的值),当我点击 JButton 时,我将看到新组件(JTextField)。
我试试:
JButton button = new JButton("Do it");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
for(int i=0;i<Integer.parseInt(textField.getText());i++){
add(new JTextField());
validate();
repaint();
}
}
});
我应该如何编写获取新组件的代码?
我的方法:
public static void newComp(String value)
{
for(int i=0;i<Integer.parseInt(value);i++)
{
contentPane.add(new JTextField());
contentPane.revalidate();
contentPane.repaint();
}
【问题讨论】:
-
在您的 GUI/JFrame 中创建一个“public static void”方法,该方法将您使用的字符串 (textField.getText()) 作为参数。然后在该方法中创建您的 for 循环和文本字段。请记住,此方法将是静态的,因此您不能在方法之外使用参数,除非您将其作为参数提供。在添加它们之前定位和自定义文本字段可能是一个好主意。否则他们都将在彼此之上。而不是 alidate(); (我确定这是一个错字),试试 revalidate();
-
另一个想法可能是,如果您有最大数量的可用文本字段,则在开始时创建它们,然后 setVisible(false);在他们。然后,您可以在需要时让它们可见。
-
我创建了方法,看看我的第一篇文章,我做错了什么?未创建组件时如何设置位置文本字段?
-
不要做 contentPane.add(new JTextField()),只需在你的 for 循环中创建一个新变量,比如 JTextField temp = new JTextField();并在 temp 上设置位置,然后将其添加到内容窗格中。如果您希望它们在彼此下方生成,请执行类似 temp.setPosition(someStartPositionX, someStartPositionY + (i*20));
标签: java user-interface dynamic components jtextfield