效果显示
单击”绘制矩形“按钮后:
单击”绘制椭圆“后:
代码实现
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//测试绘图
public class SimpleDraw {
private final String RECT_SHAPE="rect";//矩形
private final String OVAL_SHAPE="oval";//椭圆
Frame frame = new Frame("演示绘图");
Button bt1 = new Button("绘制矩形");
Button bt2 = new Button("绘制椭圆");
//定义变量记录当前绘制的图形
private String shape = "";
//自定类继承Canvas类,重写paint(Graphics g)方法完成画图,即画布
private class MyCanvas extends Canvas {
@Override
public void paint(Graphics g) {
if(shape.equals(RECT_SHAPE)){
//绘制矩形
g.setColor(Color.BLACK);//画笔黑色
g.drawRect(100,100,150,100);//绘制矩形
}else if(shape.equals(OVAL_SHAPE)){
//绘制椭圆
g.setColor(Color.RED);//红色
g.drawOval(100,100,150,100);//绘制椭圆
}
}
}
//创建自定义画布对象
MyCanvas drawArea = new MyCanvas();
//组装视图
public void init(){
bt1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//修改标记的值为rect
shape = RECT_SHAPE;//矩形
drawArea.repaint();//刷新绘图
}
});
bt2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//修改标记的值为oval
shape = OVAL_SHAPE;//椭圆
drawArea.repaint();//刷新绘图
}
});
Panel p = new Panel();
p.add(bt1);
p.add(bt2);
frame.add(p,BorderLayout.SOUTH);//放在南部区域
//drawArea画布的大小需要设置
drawArea.setSize(300,300);
frame.add(drawArea);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
new SimpleDraw().init();
}
}