在文本字段没有文本
问题描述:
请帮助我这个代码 的文本没有在文本框出现,虽然它是通过命令提示符而不是在文本框在文本字段没有文本
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();
}
}
答
当调用actionPerformed
方法,你只是改变str
变量的值。这并不自动更新文本框 - 只是因为你叫
tf.setText(str);
并不意味着它会自动查找在str
变量的全部时间。如果要再次设置文本,请再次拨打tf.setText
。 (或者,您可以进入整个模型/视图/控制器业务,这就是Swing的工作原理,但这要复杂得多,目前您可能最好采用简单的方法。)
答
看起来只是将文本设置为null(因为launchframe()方法中的str为null)。即使稍后分配该字符串,也需要使用有效的字符串调用setText,但文本字段仍然为空。
你应该真的接受你的问题的答案(点击答案左边的复选标记)。 – 2010-08-23 17:34:18