GridBagLayout中的JTextField ActionListener

时间:2012-05-31 22:24:19

标签: java swing actionlistener jtextfield gridbaglayout

我在向JTextField添加actionlistener时遇到了麻烦。我需要将用户输入的文本转换为字符串,以便我可以使用它。

任何人都可以告诉我我做错了什么或我应该怎么做。

以下是代码:

public void actionPerformed(ActionEvent e)
        {
            //Execute when button is pressed
            JFrame frame = new JFrame("Value Bet");
            frame.setVisible(true);
            frame.setSize(500,300);
            GridBagLayout layout = new GridBagLayout();
            frame.setLayout(layout);
            GridBagConstraints c = new GridBagConstraints();

            JLabel label;
            JTextField tf;

            if (shouldFill) {
            //natural height, maximum width
            c.fill = GridBagConstraints.HORIZONTAL;
            }
            if (shouldWeightX) {
            c.weightx = 0.5;
            }

            ...

            tf = new JTextField();
            c.fill = GridBagConstraints.HORIZONTAL;
            c.gridx = 1;
            c.gridy = 2;
            frame.add(tf, c);
            tf.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e)
                {
                    String chance1 = tf.getText();
                }
            });

...

2 个答案:

答案 0 :(得分:1)

为什么使用ActionListener代替KeyListener

您应该使用KeyListener或:

tf.getDocument().addDocumentListener(documentListener);

DocumentListener

答案 1 :(得分:1)

public void actionPerformed(ActionEvent e)
{
    //  Look Ma, a one-liner!
    String chance1 = JOptionPane.showInputDialog(someComponent, "Value Bet");
}

option pane one-liner

进一步研究重载方法以调整外观,为健壮性添加null检查,并考虑使用微调器而不是文本字段(BNI)。