0

请帮助我使用此代码文本未出现在文本字段中,尽管它是通过 cmd 提示符但不在文本字段中

import java.awt.*;
import javax.swing.*;

import java.awt.event.*;
import javax.swing.event.*;



public class listener11
{
    private JFrame f;
    private JButton b;
    private JTextField tf;
    public static String str;


    public  listener11()
    {
        f=new JFrame("Listener1");
        b=new JButton("Press");
        b.setActionCommand("Button b1 pressed");
        tf=new JTextField(30);
    }

    public void launchframe()
    {
         f.setLayout(null);
         b.addActionListener(new Buttonlistener());
         b.setBounds(200,200,100,100);
         tf.setBounds(100,100,200,50);
         tf.setText(str);
         f.add(b);
         f.add(tf);
         f.setSize(400,400);

         f.setVisible(true);
    }

    public static void main(String[]arg)
    {
         listener11 l1=new listener11();
         l1.launchframe();
    }
}

class Buttonlistener implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {
        listener11.str="Action took place \n button's command is"+e.getActionCommand();
    }
}
4

2 回答 2

2

调用该actionPerformed方法时,您只是在更改str变量的值。这不会自动更新文本框 - 只是因为您调用了

tf.setText(str);

并不意味着它会一直自动查看str变量。如果您想再次设置文本,请tf.setText再次调用。(或者,您可以进入整个模型/视图/控制器业务,这就是 Swing 的工作方式,但这要复杂得多。目前您最好还是坚持简单的方法。)

于 2010-08-23T17:33:51.773 回答
1

看起来您只是将文本设置为 null (因为在 launchframe() 方法中 str 为 null )。您需要使用有效字符串调用 setText,即使您稍后分配该字符串,文本字段仍然为空。

于 2010-08-23T17:35:44.173 回答