我正在尝试使用JDialog
作为String
的输入。但是我得到的文字是在我点击按钮之前。
这是我的对话:
public class AddMemberDialog extends JDialog {
private JTextField name;
public AddMemberDialog() {
super(new JFrame("Add Member"), "Add Member");
this.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
this.setMinimumSize(new Dimension(500, 500));
this.name = new JTextField();
JButton add = new JButton("Add");
add.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
close();
}
});
this.setLayout(new GridLayout(2, 1, 5, 5));
this.add(name);
this.add(add);
this.pack();
}
private void close(){ this.dispose(); }
public String getName(){ return this.name.getText(); }
}
以下是我用于访问String
的内容:
AddMemberDialog input = new AddMemberDialog();
input.setLocationRelativeTo(this);
input.setVisible(true);
String txt = input.getName();
答案 0 :(得分:2)
import javax.swing.JDialog;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.Dimension;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.GridLayout;
public class AddMemberDialog extends JDialog
{
private JTextField name;
public static void main(String[] args)
{
AddMemberDialog input = new AddMemberDialog();
input.setLocationRelativeTo(null);
input.setVisible(true);
}
public AddMemberDialog()
{
super(new JFrame("Add Member"), "Add Member");
this.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
this.setMinimumSize(new Dimension(500, 500));
this.name = new JTextField();
JButton add = new JButton("Add");
add.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
close();
}
});
JButton takeInput = new JButton("takeInput");
takeInput.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String txt = getName();
System.out.println(txt);
}
}
);
this.setLayout(new GridLayout(3, 1, 5, 5));
this.add(name);
this.add(add);
this.add(takeInput);
this.pack();
}
private void close()
{
this.dispose();
}
public String getName()
{
return this.name.getText();
}
}
好吧,基本上,你的问题是,如果你只是留下代码
AddMemberDialog input = new AddMemberDialog();
input.setLocationRelativeTo(this);
input.setVisible(true);
String txt = input.getName();
IDE会自动接收您输入的第二行代码。也就是说,除非你在IDE到达之前把东西放进去(并且IDE在几毫秒内到达那里),否则它不会再接受任何输入。所以为了补偿,我们不让程序接受输入,直到我们做好并准备好,因此需要一个按钮。在上面的代码中,我创建了一个新的JButton
并将其命名为takeInput
。还给了ActionListener
并在ActionListener
中,让它按照你的要求去做。现在,我可以控制输入何时发生。
答案 1 :(得分:0)
您可以使用JOptionPane。
import javax.swing.JOptionPane;
public class TestClass
{
public static void main(String[] args)
{
String input = JOptionPane.showInputDialog("Add Member");
System.out.println(input);
}
}