import java.awt.*;
import java.awt.event.*;
class MyClass
{
Frame f=new Frame("MyClass");
//Container con=f.get.ContentPane();
TextField t=new TextField(15);
public void init()
{
f.setVisible(true);
f.setSize(300,300);
Panel p=new Panel();
p.add(t);
f.setLayout(new BorderLayout());
f.add(p,"South");
t.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
((TextField)e.getSource()).setText("");
}});
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent ex)
{
System.exit(0);
}
});

}
public static void main(String [] args)
{
new MyClass().init();
}
}
运行之后文本显示不出来.需要最大化才可显示!
还有((TextField)e.getSource()).setText(""); 这句.知其然,不知其所以然.请帮我解释一下.感激中.......

解决方案 »

  1.   

    把f.setVisible(true);
    放到方法的后边试试.
    e.getSource()得到事件源Object
    ((TextField)e.getSource())事件源转为TextField
    ((TextField)e.getSource()).setText("")
    对TextField设置空字符串
      

  2.   

    getSource()方法应该是Image的方法啊.为什么要使用e.getSource()得到事件源呢!不明白!
      

  3.   

    f.setVisible(true);
    加在init()方法的后边(因为Frame初始默认是不显示的)在你最大化或者改变它的大小后显示出来是自动调用了paint方法((TextField)e.getSource()).setText("")
    清空TextField t=new TextField(15);但是你这里用的监听器不对,没有触发相应的事件->我也不明白你想要做什么!
    你可以试试ItemEvent
      

  4.   

    ((TextField)e.getSource()).setText("");  麻烦了..... t.setText("");  就行
      

  5.   

    e.getSource()这是一个Object引用嘛
      

  6.   

    现在我自己已经搞定e.getSource().但显示的问题还没有搞定.怎么才能运行之后就显示想要的结果.而不是在最大化之后.在线等........
      

  7.   

    import java.awt.*;
    import java.awt.event.*;
    class MyClass
    {
    Frame f=new Frame("MyClass");
    //Container con=f.get.ContentPane();
    TextField t=new TextField(15);
    public void init()
    {f.setSize(300,300);
    Panel p=new Panel();
    p.add(t);
    f.setLayout(new BorderLayout());
    f.add(p,"South");
    t.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    ((TextField)e.getSource()).setText("");
    }});
    f.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent ex)
    {
    System.exit(0);
    }
    });
    f.setVisible(true);}
    public static void main(String [] args)
    {
    new MyClass().init();
    }
    }
    经测试通过..就是把那句话放一个地方.输入字符后按回车,文本里的字符消失
      

  8.   

    把f.setVisible(true);放在init方法中组件声明的后面,事件监听的前面,经过测试正确!
    如:{f.setSize(300,300);Panel p=new Panel();
    p.add(t);
    f.setLayout(new BorderLayout());
    f.add(p,"South");
    f.setVisible(true);
    t.addActionListener(new ActionListener()