按Jbutton获取TextField值

时间:2014-05-05 07:10:45

标签: java jframe jbutton actionlistener

问题在于:

我想要一个具有TextFieldJButton的交互式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

1 个答案:

答案 0 :(得分:-1)

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

但在您的情况下,您可以使用JOptionPane#showInputDialog(java.lang.Object, java.lang.Object)来获取输入。