回 帖 发 新 帖 刷新版面

主题:help me !!!!!!!!!!!!!!!!!!!!!!!

交谈中请勿轻信汇款、中奖消息,勿轻易拨打陌生电话。

hmily(342925341) 23:20:46
import java.awt.*;
import java.awt.event.*;

public class awt extends Frame{
    private final String names[]={"one","two","three","four","five","six"};
    private Button[] buttons=new Button[6];
    private boolean flag=true;
    final GridLayout layout1=new GridLayout(2,3,5,10);
    final GridLayout layout2=new GridLayout(3,2);
    
    public awt(String title) {
        super(title);
        setLayout();
        ActionListener listener=new ActionListener(){
            setLayout();                             //这里错啦 why?
            awt.this.validate();                     //这里错啦 why?
        };
        for(int i=0;i<buttons.length;i++){
            buttons[i]=new Button(names[i]);
            buttons[i].addActionlistener(listener);
            add(buttons[i]);
        }
        
        setSize(250,250);
        setVisible(true);
        
    }
    private void setLayout(){
        if(flag)
            setLayout(layout1);
        else 
            setLayout(layout2);
        flag=!flag;
    }
    
    
    public static void main(String[] args) {
        new awt("java");
        
        
        
        
    }
    
}[em10][em10][em10]

回复列表 (共4个回复)

沙发

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

板凳

ActionListener是接口,是不能new的```
buttons[i].addActionlistener(listener);  处应该写成   buttons[i].addActionlistener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{  setLayout();                             //这里错啦 why?  //将此语句放在这里才对的
            awt.this.validate();}  });

3 楼

楼上说的似乎不对,
ActionListener listener=new ActionListener(){
            setLayout();                             //这里错啦 why?
            awt.this.validate();                     //这里错啦 why?
        };
在语法上是正确的。这里使用的是Java的内部类机制,并不是新建了一个接口。所以楼主的程序就错了,因为这是内部类实现了一个接口的语法,所以这个setLayout()的调用者是这个接口,而这个接口并没有这个方法,所以会报错。
不知道这样说明不明白~~

4 楼

嗯,明白了```我一直以为是我解释的那样```

我来回复

您尚未登录,请登录后再回复。点此登录或注册