程序如下:
import java.awt.*;
import java.awt.event.*;
class ToeButton extends Canvas {
    int state=ToeDialog.BLANK;
    ToeDialog parent;
    
    ToeButton(ToeDialog parent){
        this.parent=parent;
    }
    public void paint(Graphics g){
        int x1=0;
        int y1=0;
        int x2=size().width-1;
        int y2=size().height-1;
        g.drawRect(x1,y1,x2,y2);
        int wide=x2/2;
        int high=y2/2;
        if(state==ToeDialog.XX){
            g.drawLine(x1,y1,x1+wide,y1+high);
            g.drawLine(x1,y1+high,x1+wide,y1);
        }
        if(state == ToeDialog.OO) {
            g.drawOval(x1, y1, x1+wide/2, y1+high/2);
}
       
    }
    public boolean mouseDown(Event evt,int x,int y){
        if(state==ToeDialog.BLANK){
            state=parent.turn;
            parent.turn=(parent.turn==ToeDialog.XX?ToeDialog.OO:ToeDialog.XX);
            
        }
        else
            state=(state==ToeDialog.XX?ToeDialog.OO:ToeDialog.XX);
        repaint();
        return true;
    }
}
class ToeDialog extends Dialog {
    static final int BLANK = 0;
    static final int XX = 1;
    static final int OO = 2;
    int turn = XX;
    public ToeDialog(Frame parent, int w, int h) {
        super(parent, "The game itself", false);
setLayout(new GridLayout(w, h));
for(int i = 0; i < w * h; i++)
            add(new ToeButton(this));
//resize(w * 50, h * 50);
        setSize(w*50,h*50);
        
        
    }
    public boolean handleEvent(Event evt) {
        if(evt.id == Event.WINDOW_DESTROY)
            dispose();
else
            return super.handleEvent(evt);
return true;
    }
}public class ToeTest extends Frame{
    TextField rows = new TextField("3");
    TextField cols = new TextField("3");
    /** Creates a new instance of ToeTest */
    public ToeTest() {
        setTitle("Toe Test");
Panel p = new Panel();
p.setLayout(new GridLayout(2,2));
p.add(new Label("Rows", Label.CENTER));
p.add(rows);
p.add(new Label("Columns", Label.CENTER));
p.add(cols);
add("North", p);
        Button b=new Button("go");
        b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
                            Dialog d=new ToeDialog(this,Integer.parseInt(rows.getText()),Integer.parseInt(cols.getText()));
                            d.setVisible(true);
}
});
add("South", b);
        /*b.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
Dialog d = new ToeDialog(this,Integer.parseInt(rows.getText()),Integer.parseInt(cols.getText()));
                d.setVisible(true);
            }
        });*/
        add("South",b);
    }
    /*public boolean handleEvent(Event evt) {
if(evt.id == Event.WINDOW_DESTROY)
            System.exit(0);
else
            return super.handleEvent(evt);
return true;
    }*/
        
    /*public boolean action(Event evt, Object arg) {
if(arg.equals("go")) {
            Dialog d = new ToeDialog(this,Integer.parseInt(rows.getText()),Integer.parseInt(cols.getText()));
            //d.show();
            d.setVisible(true);
}
else
            return super.action(evt, arg);
return true;
    }*/
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Frame f = new ToeTest();
f.setSize(200,100);
f.setVisible(true);
        
        f.addWindowListener(
                new WindowAdapter(){
                    public void windowClosing(WindowEvent e){
                        System.exit(0);
                    }
        });
      
    }
}
编译错误,无法实例对话框.请大家帮我解决这个问题.
第二,请帮我把剩余的老消息机制转换成新的消息机制.
第三,请问size().width是什么意思?编译时说size()已过期,请问可以用什么函数替换?