菜单对话框的例子并绘图标
这是一个菜单的例子,在关闭时弹出对话框
绘一个图标,放在弹出对话框的左边
  1
import java.awt.*;
2
import java.awt.event.*;
3
class ConfirmDialog extends Dialog implements ActionListener
4
{
5
    private StopSign stop=new StopSign();
6
    private Button okay=new Button("OK");
7
    private Button cancel=new Button("cancel");
8
    private Label label=new Label("Are you sure?",Label.CENTER);
9
    public  boolean isOkay=false;
10
    private class WindowCloser extends WindowAdapter
11
    {
12
        public void windowClosing(WindowEvent we)
13
        {
14
            ConfirmDialog.this.isOkay=false;
15
            ConfirmDialog.this.hide();
16
        }
17
    }
18
    public ConfirmDialog(Frame parent)
19
    {
20
        this(parent,"Please confirm","Are you sure?");
21
    }
22
    public ConfirmDialog(Frame parent, String title, String question)
23
    {
24
        super(parent,title, true);
25
        label.setText(question);
26
        setup();
27
        okay.addActionListener(this);
28
        cancel.addActionListener(this);
29
        addWindowListener(new WindowCloser());
30
        setResizable(false);//不能改变对话框的大小
31
        pack();
32
        show();
33
    }
34
    private void setup()
35
    {
36
        Panel buttons=new Panel();
37
        buttons.setLayout(new FlowLayout());
38
        buttons.add(okay);
39
        buttons.add(cancel);
40
        setLayout(new BorderLayout());
41
        add("Center",label);
42
        add("South",buttons);
43
        add("West",stop);
44
    }
45
    public void actionPerformed(ActionEvent ae)
46
    {
47
        isOkay=(ae.getSource()==okay);
48
        hide();
49
    }
50
}
51
class StopSign extends Canvas
52
{
53
    public StopSign()
54
    {
55
        super();
56
        setBackground(Color.cyan);
57
    }
58
    public Dimension getPreferredSize()  //覆盖该方法
59
    {
60
        return new Dimension(120,140);
61
    }
62
    public void paint(Graphics g)
63
    {
64
        final int MID=60;
65
        final int TOP=20;
66
        
67
        g.setColor(Color.blue);
68
        g.fillRect(0,175,300,50);//背景;填充指定的矩形
69
70
        g.setColor(Color.yellow); 
71
        g.fillOval(-20,-20,40,40);  //太阳;用当前颜色填充由指定矩形限定的椭圆
72
73
        g.setColor(Color.white);
74
        g.fillOval(MID-20,TOP,40,40);  //头
75
        g.fillOval(MID-35,TOP+35,70,50);//上躯干
76
        g.fillOval(MID-50,TOP+80,100,60);//下躯干
77
78
        g.setColor(Color.black);
79
        g.fillOval(MID-10,TOP+10,5,5);  //左眼
80
        g.fillOval(MID+5,TOP+10,5,5); //右眼
81
82
        g.drawArc(MID-10, TOP+20, 20, 10, 190, 160);//笑容
83
        
84
        g.drawLine(MID-25,TOP+60, MID-50, TOP+30);  //左手臂
85
        g.drawLine(MID+25,TOP+60, MID+55, TOP+30);  //右手臂
86
87
        g.drawLine(MID-20, TOP+5, MID+20, TOP+5);  //帽子的边沿
88
        g.fillRect(MID-15,TOP-20,30,25);//帽顶
89
    }
90
}
91
public class MenuTest  extends  Frame implements ActionListener 
92
{
93
    private MenuItem fileNew=new MenuItem("New");
94
    private MenuItem fileOpen=new MenuItem("Open");
95
    private MenuItem fileExit=new MenuItem("Exit");
96
    private MenuItem editCut=new MenuItem("Cut");
97
    private MenuItem editCopy=new MenuItem("Copy");
98
    private MenuItem editPaste=new MenuItem("Paste");
99
    public MenuTest()
100
    {
101
        super("Menu Test Program");
102
        Menu file=new Menu("File");
103
        file.add(fileNew);  fileNew.setEnabled(false);
104
        file.add(fileOpen); fileOpen.setEnabled(false);
105
        file.addSeparator();  //在指定位置分隔一行
106
        file.add(fileExit); fileExit.setEnabled(true);
107
        Menu edit=new Menu("Edit");
108
        edit.add(editCut);  editCut.setEnabled(false);
109
        edit.add(editCopy); editCopy.setEnabled(false);
110
        edit.add(editPaste);editPaste.setEnabled(false);
111
        MenuBar bar=new MenuBar();
112
        bar.add(file);
113
        bar.add(edit);
114
        setMenuBar(bar);
115
        fileExit.addActionListener(this);
116
        setSize(100,100);
117
        show();
118
    }
119
    public void actionPerformed(ActionEvent e)
120
    {
121
        if(e.getSource()==fileExit)
122
        {
123
            ConfirmDialog exit=new ConfirmDialog(this,"Confirm Exit","Do you really want to exit?");
124
            if(exit.isOkay)
125
               System.exit(0);
126
        }
127
    }
128
    public static void main(String[] args) 
129
    {
130
        MenuTest f=new MenuTest();
131
    }
132
}
133
import java.awt.*;2
import java.awt.event.*;3
class ConfirmDialog extends Dialog implements ActionListener4
{5
    private StopSign stop=new StopSign();6
    private Button okay=new Button("OK");7
    private Button cancel=new Button("cancel");8
    private Label label=new Label("Are you sure?",Label.CENTER);9
    public  boolean isOkay=false;10
    private class WindowCloser extends WindowAdapter11
    {12
        public void windowClosing(WindowEvent we)13
        {14
            ConfirmDialog.this.isOkay=false;15
            ConfirmDialog.this.hide();16
        }17
    }18
    public ConfirmDialog(Frame parent)19
    {20
        this(parent,"Please confirm","Are you sure?");21
    }22
    public ConfirmDialog(Frame parent, String title, String question)23
    {24
        super(parent,title, true);25
        label.setText(question);26
        setup();27
        okay.addActionListener(this);28
        cancel.addActionListener(this);29
        addWindowListener(new WindowCloser());30
        setResizable(false);//不能改变对话框的大小31
        pack();32
        show();33
    }34
    private void setup()35
    {36
        Panel buttons=new Panel();37
        buttons.setLayout(new FlowLayout());38
        buttons.add(okay);39
        buttons.add(cancel);40
        setLayout(new BorderLayout());41
        add("Center",label);42
        add("South",buttons);43
        add("West",stop);44
    }45
    public void actionPerformed(ActionEvent ae)46
    {47
        isOkay=(ae.getSource()==okay);48
        hide();49
    }50
}51
class StopSign extends Canvas52
{53
    public StopSign()54
    {55
        super();56
        setBackground(Color.cyan);57
    }58
    public Dimension getPreferredSize()  //覆盖该方法59
    {60
        return new Dimension(120,140);61
    }62
    public void paint(Graphics g)63
    {64
        final int MID=60;65
        final int TOP=20;66
        67
        g.setColor(Color.blue);68
        g.fillRect(0,175,300,50);//背景;填充指定的矩形69

70
        g.setColor(Color.yellow); 71
        g.fillOval(-20,-20,40,40);  //太阳;用当前颜色填充由指定矩形限定的椭圆72

73
        g.setColor(Color.white);74
        g.fillOval(MID-20,TOP,40,40);  //头75
        g.fillOval(MID-35,TOP+35,70,50);//上躯干76
        g.fillOval(MID-50,TOP+80,100,60);//下躯干77

78
        g.setColor(Color.black);79
        g.fillOval(MID-10,TOP+10,5,5);  //左眼80
        g.fillOval(MID+5,TOP+10,5,5); //右眼81

82
        g.drawArc(MID-10, TOP+20, 20, 10, 190, 160);//笑容83
        84
        g.drawLine(MID-25,TOP+60, MID-50, TOP+30);  //左手臂85
        g.drawLine(MID+25,TOP+60, MID+55, TOP+30);  //右手臂86

87
        g.drawLine(MID-20, TOP+5, MID+20, TOP+5);  //帽子的边沿88
        g.fillRect(MID-15,TOP-20,30,25);//帽顶89
    }90
}91
public class MenuTest  extends  Frame implements ActionListener 92
{93
    private MenuItem fileNew=new MenuItem("New");94
    private MenuItem fileOpen=new MenuItem("Open");95
    private MenuItem fileExit=new MenuItem("Exit");96
    private MenuItem editCut=new MenuItem("Cut");97
    private MenuItem editCopy=new MenuItem("Copy");98
    private MenuItem editPaste=new MenuItem("Paste");99
    public MenuTest()100
    {101
        super("Menu Test Program");102
        Menu file=new Menu("File");103
        file.add(fileNew);  fileNew.setEnabled(false);104
        file.add(fileOpen); fileOpen.setEnabled(false);105
        file.addSeparator();  //在指定位置分隔一行106
        file.add(fileExit); fileExit.setEnabled(true);107
        Menu edit=new Menu("Edit");108
        edit.add(editCut);  editCut.setEnabled(false);109
        edit.add(editCopy); editCopy.setEnabled(false);110
        edit.add(editPaste);editPaste.setEnabled(false);111
        MenuBar bar=new MenuBar();112
        bar.add(file);113
        bar.add(edit);114
        setMenuBar(bar);115
        fileExit.addActionListener(this);116
        setSize(100,100);117
        show();118
    }119
    public void actionPerformed(ActionEvent e)120
    {121
        if(e.getSource()==fileExit)122
        {123
            ConfirmDialog exit=new ConfirmDialog(this,"Confirm Exit","Do you really want to exit?");124
            if(exit.isOkay)125
               System.exit(0);126
        }127
    }128
    public static void main(String[] args) 129
    {130
        MenuTest f=new MenuTest();131
    }132
}133

                    
                


    
                
            
        
浙公网安备 33010602011771号