frame
いくつかを含むJavaでを作成しましtextfields and buttons
た。ユーザーがより多くのテキストフィールド(たとえば、データを追加するため)を必要としていると仮定して、を配置しbutton
、ユーザーがクリックするthe button
と、新しいものtextfield
が表示されるはずです。次に、ユーザーはデータを入力し、クリックしてbutton
別のデータtextfield
が表示されるようにします。これどうやってするの ?ボタンをクリックしてテキストフィールドをどんどん表示するには、ボタンにどのようなコードを書く必要がありますか?ありがとうございました !
21055 次
2 に答える
3
コンポーネントを にJFrame
直接追加するのではなく、 に追加することをお勧めしますJPanel
。あなたの問題に関連していますが、この小さな例を見てください。うまくいけば、ヒントを与えることができるかもしれません。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JFrameExample
{
private JFrame frame;
private JButton button;
private JTextField tfield;
private String nameTField;
private int count;
public JFrameExample()
{
nameTField = "tField";
count = 0;
}
private void displayGUI()
{
frame = new JFrame("JFrame Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridLayout(0, 1, 2, 2));
button = new JButton("Add JTextField");
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
tfield = new JTextField();
tfield.setName(nameTField + count);
count++;
frame.add(tfield);
frame.revalidate(); // For JDK 1.7 or above.
//frame.getContentPane().revalidate(); // For JDK 1.6 or below.
frame.repaint();
}
});
frame.add(button);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String... args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new JFrameExample().displayGUI();
}
});
}
}
于 2012-09-04T01:26:35.497 に答える
2
と呼ばれるメイン コンテナと、すでに に追加されてpanel
いるボタン変数があると仮定すると、次のことができます。button
panel
// handle the button action event
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// create the new text field
JTextField newTextField = new JTextField();
// add it to the container
panel.add(newTextField);
panel.validate();
panel.repaint();
}
});
新しいテキスト フィールドを追加する場合、使用しているレイアウト マネージャーによっては、レイアウト関連の特性について言及する必要がある場合があります (たとえば、 を使用している場合GridBagLayout
は、制約を指定する必要があります)。
于 2012-09-03T16:58:50.063 に答える