2010-08-23 114 views
0

请帮助我这个代码 的文本没有在文本框出现,虽然它是通过命令提示符而不是在文本框在文本字段没有文本

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(); 
    } 
} 
+1

你应该真的接受你的问题的答案(点击答案左边的复选标记)。 – 2010-08-23 17:34:18

回答

2

当调用actionPerformed方法,你只是改变str变量的值。这并不自动更新文本框 - 只是因为你叫

tf.setText(str); 

并不意味着它会自动查找在str变量的全部时间。如果要再次设置文本,请再次拨打tf.setText。 (或者,您可以进入整个模型/视图/控制器业务,这就是Swing的工作原理,但这要复杂得多,目前您可能最好采用简单的方法。)

1

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