Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按Jbutton获取TextField值_Java_Jframe_Jbutton_Actionlistener - Fatal编程技术网

Java 按Jbutton获取TextField值

Java 按Jbutton获取TextField值,java,jframe,jbutton,actionlistener,Java,Jframe,Jbutton,Actionlistener,问题是: 我想要一个交互式GUI,它有一个TextField和一个JButton。用户在TextField中输入他们的pincode,按JButton,该值从主类获取,用作函数中的参数 这是我的JFrame,带有文本字段和按钮代码: public class JTextFieldDemo extends JFrame { //Class Declarations JTextField jtfText1, jtfUneditableText; String dis

问题是:

我想要一个交互式GUI,它有一个
TextField
和一个
JButton
。用户在
TextField
中输入他们的
pincode
,按
JButton
,该值从主类获取,用作函数中的参数

这是我的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) 当我运行main类时,会出现
Jframe
,在
TextField
中键入任何内容之前,它就会消失


2) 主类中的
pincode
始终为
null
,即使我在
ButtonHandler
类中对其进行了硬编码。

当您的主方法在创建JFrame后获得pin码时,它将具有默认值null。因此,获取pin码(KeyStore.load(null,pincode))方法应该在ButtonHandler#actionPerformed()中


但是在你的例子中,你可以使用
JOptionPane#showInputDialog(java.lang.Object,java.lang.Object)
来获取输入。

好吧,这并不是这个问题的确切答案,但在我的例子中解决了这个问题。谢谢你的帮助。