import java.awt.*;
import java.awt.event.*;public class ChatClint {
public static void main(String[] args) {
new ChatClintFrame();
}
}class ChatClintFrame extends Frame{
TextField sendText = new TextField(300);
TextArea showText = new TextArea("欢迎您!",40,1);
public ChatClintFrame() {
setBounds(400,160,380,500);
setTitle("ChatClint");
setLayout(new BorderLayout());
add(sendText,BorderLayout.SOUTH);
add(showText,BorderLayout.NORTH);
addWindowListener(new ChatClintClose()) ;
sendText.addActionListener(new SendMessage());
setVisible(true);

}

/*运行Launch文件
public void launchChatClintFrame() {
new ChatClintFrame();
}
*/

}

 class ChatClintClose extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}}class SendMessage implements ActionListener{
public void actionPerformed(ActionEvent e){
TextField sendText = (TextField)e.getSource();
String s = sendText.getText();
sendText.setText("");
TextArea showText;
showText.setText(s);  //这里注掉以后可以运行不报错,但是没达到我的要求,为什么呢?
}
}最后一行 注掉以后可以运行不报错,但是没达到我的要求,为什么呢?

解决方案 »

  1.   

    最后一句写错了。要这样写ChatClintFrame.showText.setText(s);刚才我运行了下,可以了没问题。
      

  2.   

    哦,还有你ChatClintFrame类中个的showText要写成静态的static TextArea showText = new TextArea("欢迎您!",40,1);你在最后那句要引用的不是自己类中的成员。所以要引用ChatClintFrame类
      

  3.   

    Cannot make a static reference to the non-static field ChatClintFrame.showText  楼上的不行啊
      

  4.   

    如果我想在SendMessage上家个构造方法,class SendMessage implements ActionListener{    
        public void SendMessage(TextField sendText,TextArea showText){
         this.sendText = sendText;
         this.showText = showText;
        }
    public void actionPerformed(ActionEvent e){
            TextField sendText = (TextField)e.getSource();        
            String s = sendText.getText();
            sendText.setText("");
            TextArea showText;
            showText.setText(s); //这里注掉以后可以运行不报错,但是没达到我的要求,为什么呢?
        }    
    }但是会报错,这个怎么改呢?
      

  5.   

    你这个类中都没设sendText和showText,你就用this.sendText.肯定不行。
      

  6.   

    import java.awt.*;
    import java.awt.event.*;public class ChatClint {
        public static void main(String[] args) {
            new ChatClintFrame();
        }
    }class ChatClintFrame extends Frame{
        TextField sendText = new TextField(300);
        static TextArea showText = new TextArea("欢迎您!",40,1);
        public ChatClintFrame() {
            setBounds(400,160,380,500);
            setTitle("ChatClint");
            setLayout(new BorderLayout());
            add(sendText,BorderLayout.SOUTH);
            add(showText,BorderLayout.NORTH);
            addWindowListener(new ChatClintClose()) ;
            sendText.addActionListener(new SendMessage());    
            setVisible(true);    
            
        }
        
        /*运行Launch文件
        public void launchChatClintFrame() {
            new ChatClintFrame();
        }
        */
        
    }    
        
     class ChatClintClose extends WindowAdapter    {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }}class SendMessage implements ActionListener{    
        public void actionPerformed(ActionEvent e){
            TextField sendText = (TextField)e.getSource();        
            String s = sendText.getText();
            sendText.setText("");
            ChatClintFrame.showText.setText(s);  //这是改了好之后正常运行。    }    
    }我在eclipse下和doc下都运行正常
      

  7.   

    楼上的确实可以,平行类是无法直接引用ChatClint这个类里面的变量的,如果要用的话,就要想办法把变量从ChatClint传递到SendMessage,通过构造方法是最好的。
      

  8.   

    楼上的,我声明了,还是报错貌似局部变量不能初始化,那么除了使用内部类和定义static ,就不能够使用平行类了么?
      

  9.   

    import java.awt.*;
    import java.awt.event.*;public class ChatClint {
        public static void main(String[] args) {
            new ChatClintFrame();
        }
    }class ChatClintFrame extends Frame{
        TextField sendText = new TextField(300);
        TextArea showText = new TextArea("欢迎您!",40,1);
        public ChatClintFrame() {
            setBounds(400,160,380,500);
            setTitle("ChatClint");
            setLayout(new BorderLayout());
            add(sendText,BorderLayout.SOUTH);
            add(showText,BorderLayout.NORTH);
            addWindowListener(new ChatClintClose()) ;
            sendText.addActionListener(new SendMessage(showText));    
            setVisible(true);    
            
        }
        
        /*运行Launch文件
        public void launchChatClintFrame() {
            new ChatClintFrame();
        }
        */
        
    }    
        
     class ChatClintClose extends WindowAdapter    {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }}class SendMessage implements ActionListener{
    TextArea showText;
    public SendMessage(TextArea showText){
    this.showText = showText;
    }
        public void actionPerformed(ActionEvent e){
            TextField sendText = (TextField)e.getSource();
            String s = sendText.getText();
            sendText.setText("");
            showText.setText(s);  //这里注掉以后可以运行不报错,但是没达到我的要求,为什么呢?
        }    
    }
    lz你试试这个吧。
      

  10.   

    import java.awt.*;
    import java.awt.event.*;public class ChatClient {
        public static void main(String[] args) {
         ChatClintFrame f=  new ChatClintFrame();
        }
    }
    class ChatClintFrame extends Frame{
        TextField sendText = new TextField(300);
        TextArea showText = new TextArea("欢迎您!",40,1);
        public ChatClintFrame() {
            setBounds(400,160,380,500);
            setTitle("ChatClint");
            setLayout(new BorderLayout());
            add(sendText,BorderLayout.SOUTH);
            add(showText,BorderLayout.NORTH);
            addWindowListener(new ChatClintClose()) ;
            sendText.addActionListener(new SendMessage());    
            setVisible(true);    
            
        }
        
        class SendMessage implements ActionListener{    
            public void actionPerformed(ActionEvent e){
                TextField sendText = (TextField)e.getSource();        
                String s = sendText.getText();
                System.out.println(s);
                sendText.setText("");
                showText.setText(s);  //这里注掉以后可以运行不报错,但是没达到我的要求,为什么呢?
            }    
        }
        
    }    
        
     class ChatClintClose extends WindowAdapter    {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }}
    把SendMessage当内部类