import java.awt.*; import java.awt.event.*; import java.util.Random; import java.util.concurrent.atomic.AtomicReference; /** * @ClassName DrawSimple * @projectName: object1 * @author: Zhangmingda * @description: XXX * date: 2021/5/7. */ public class DrawSimple { public static void main(String[] args) { //窗口 Frame frame = new Frame("简单画图示例"); //窗口关闭按钮动作 WindowListener closeListener = new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.out.println("窗口关闭"); System.exit(0); } }; frame.addWindowListener(closeListener); //绘制图形形状变量 AtomicReference<String> shape = new AtomicReference<>(); //画布 Canvas canvas = new Canvas(){ Random random = new Random(); @Override public void paint(Graphics g) { //g为画笔 System.out.println("画图中"); if (shape.get() != null){ switch (shape.get()){ case "rect": //设置画笔颜色Color(红色值,绿色值,蓝色值) 红绿蓝三色取值范围0-255 组合起来可以组成人类可见的任何颜色 g.setColor(new Color(255,0,0)); //画矩形,x,y分别为起始位置,后面两个参数为宽,高 Random.nextInt(200) 为伪随机数 g.drawRect(20,20,random.nextInt(200),random.nextInt(200)); break; case "oval": //画椭圆 g.setColor(new Color(10,100,30)); g.drawOval(40,20,random.nextInt(200),random.nextInt(200)); } } } }; canvas.setSize(250,250); frame.add(canvas); //容器 Panel panel = new Panel(); //按钮 Button drawRectBtn = new Button("画矩形"); Button drawOvalBtn = new Button("画椭圆"); //按钮绑定事件 drawRectBtn.addActionListener(e ->{ shape.set("rect"); canvas.repaint(); //清除后重新绘制 }); drawOvalBtn.addActionListener(e ->{ shape.set("oval"); canvas.repaint(); //清除后重新绘制 }); panel.add(drawOvalBtn); panel.add(drawRectBtn); frame.add(panel,BorderLayout.SOUTH); //窗口自动调整大小 frame.setLocation(400,300); frame.pack(); frame.setVisible(true); } }
java 图形化小工具Abstract Window Toolit :画笔Graphics,画布Canvas(),弹球小游戏
原文:https://www.cnblogs.com/zhangmingda/p/14738111.html