问题在于:
我想要一个具有TextField
和JButton
的交互式GUI。用户在pincode
中输入TextField
,按JButton
并从主类中提取值以用作函数中的参数。
这是我的带有TextField和Button代码的JFrame:
public class JTextFieldDemo extends JFrame {
//Class Declarations
JTextField jtfText1, jtfUneditableText;
String disp = "";
ButtonHandler handler = null;
String pin;
//Constructor
public JTextFieldDemo() {
super("Smart Token Utility");
Container container = getContentPane();
container.setLayout(new FlowLayout());
jtfText1 = new JTextField(10);
jtfUneditableText = new JTextField("Please Enter Your PIN Code", 20);
jtfUneditableText.setEditable(false);
container.add(jtfText1);
container.add(jtfUneditableText);
handler = new ButtonHandler();
JButton button = new JButton("Enter");
button.setSize(3,5);
button.addActionListener(handler);
container.add(button);
setSize(325, 100);
setLocationRelativeTo(null);
setVisible(true);
jtfText1.addActionListener(handler);
}
//Inner Class ButtonHandler
private class ButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
pin = jtfText1.getText();
}
}
这是我的主要类代码:
public static void main(String args[]) {
JTextFieldDemo test = new JTextFieldDemo();
String pincode = test.pin;
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
KeyStore.load(null, pincode);
}
我有两个问题:
1)当我运行主要课程时,会出现Jframe
,在我可以在TextField
中输入任何内容之前,它会消失。
2)即使我在pincode
课程中对其进行了硬编码,主要课程中的null
始终为ButtonHandler
。
答案 0 :(得分:-1)
当您的主要方法在创建JFrame后获取pin代码时,它将具有默认值null。所以获取pin代码(KeyStore.load(null,pincode))方法应该在ButtonHandler#actionPerformed()中。
但在您的情况下,您可以使用JOptionPane#showInputDialog(java.lang.Object, java.lang.Object)
来获取输入。