swing快速入门(二十二)

发布时间:2023年12月21日

注释很详细,直接上代码……

上一篇

新增内容

1. 绘画板画椭圆,矩形

2. 按键响应切换绘画板内的内容

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class swing_test_18 {

    //定义一下矩形和椭圆的类型名称
    private final String RECT_SHAPE  = "rect";//矩形
    private final String OVAL_SHAPE  = "oval";//椭圆

    private Frame frame=new Frame("绘图测试");

    Button btn_rect=new Button("绘制矩形");

    Button btn_oval=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);
            };
        }
    }

    //创建自定义的画布对象
    private MyCanvas canvas=new MyCanvas();

    //组装视图
    private void init() {

        //添加按钮事件监听器
        btn_rect.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                shape=RECT_SHAPE;//设置当前绘制图形类型为矩形
                canvas.repaint();//刷新画布
            }
        });
        //添加按钮事件监听器
        btn_oval.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                shape=OVAL_SHAPE;//设置当前绘制图形类型为椭圆
                canvas.repaint();//刷新画布
            }
        });

       //创建Panel面板,承载按钮
        Panel panel=new Panel();
        panel.add(btn_rect);
        panel.add(btn_oval);

        //添加面板
        frame.add(panel,BorderLayout.SOUTH);

        //设置drawer的大小
        canvas.setSize(300,300);
        //或canvas.setPreferredSize(new Dimension(300,300));

        frame.add(canvas,BorderLayout.CENTER);//添加画布

        frame.pack();
        frame.setVisible(true);
    }
    public static void main(String[] args) {
        //启动程序
        new swing_test_18().init();
    }
}

运行效果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文章来源:https://blog.csdn.net/m0_73756108/article/details/135127640
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。