新手的Java图形框架

在B站视频学习的,代码照搬…
https://b23.tv/av52343753/p13

import javax.swing.JFrame;
public class Game extends JFrame {
    /**
    * 构造器     
    **/
    public Game() {
    	this.setTitle("Java绘图");// 设定标题
    	this.setSize(400,300);// 设定大小
    	this.setLocation(200, 100);// 设定位置
    	// 关闭“X”按钮,就关闭了程序
	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	 }
private static void main(String[] args) {
        	Game game = new Game();
        	game.setVisible(true);// 让窗体显示出来
        }
}

然后在MESOD输出的结果是这样的…
图1

然后用VScode运行是这样的…
图片2

视频中编译运行出来是这样的…
图3

不甘心的我无意中看到了一篇博客…
https://blog.csdn.net/qq_39699956/article/details/104212663?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158365441119725219916071%2522%252C%2522scm%2522%253A%252220140713.130056874…%2522%257D&request_id=158365441119725219916071&biz_id=0&utm_source=distribute.pc_search_result.none-task
于是我对照着他的改进了一下我的代码…
图4
然后运行…
图5左边的窗口是左边代码的,右边的窗口是右边代码的。
激动!!
这是我Java伟大的第一步…
图6
图7

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;

public class Gss extends JFrame {

    GssPanel panel;
    int x = 40;
    int y = 140;
    int z = 25;

    /**
     * 构架器
     */
    private static final long serialVersionUID = 1L;

    public Gss() {
        this.setTitle("Java 绘一个三角形");// 设定标题
        this.setSize(900,600);// 设定大小
        this.setLocation(350, 80);// 设定位置
        // 关闭“X”按钮,就关闭了程序
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        panel = new GssPanel(this);
        this.add(panel);//添加到当前的窗体中
    }

    /**
     * 初始化方法,做准备工作 
     */
    public void setup() {


    }

    /**
     * 绘制方法,每秒多次调用
     * @param g
     */
    public void draw(Graphics g){
         g.setColor(Color.pink);//设定画笔颜色
         g.fillRect(0, 0, panel.getWidth(), panel.getHeight());//绘制“实心”矩形

        // g.setColor(Color.yellow);//设定画笔颜色
        // g.fillRect(50, 50, 90, 90);//绘制“实心”矩形
        // g.drawRect(150, 50, 90, 90);//绘制“空心”矩形

        // g.setColor(Color.blue);//设定画笔颜色
        // g.fillOval(250, 50, 90, 90);//绘制“实心”矩形
        // g.drawOval(350, 50, 90, 90);//绘制“空心”矩形
        
        g.setColor(Color.red);// 设置字体颜色
        // g.drawString("*", 60, 50);
        // g.drawString("***", 55, 60);
        // g.drawString("*****", 50, 70);
        // g.drawLine(100, 360, 500, 360);
        // g.drawLine(100, 360, 300, 60);
        // g.drawLine(300, 60, 500, 360);
        // g.drawString("三角形", 280, 210);

        g.setColor(Color.black);
        g.drawLine(0, 500, super.getWidth(), 500);// 绘制直线

        x++;
        y++;
        z++;
        g.setColor(Color.DARK_GRAY);
        g.fillOval( x, 450, 50, 50);
        g.fillOval( y, 450, 50, 50);
        g.fillRect( z, 363, 180, 90);


    }
    public void run(GssPanel gssPanel) {
	    // 这里是编程业务中的业务逻辑
	    //死循环
	    while (true){
	
	            try {
	                Thread.sleep(gssPanel.sleep);//停顿一些时间
	            }catch (final InterruptedException e) {
	                e.printStackTrace();
	            }
	            gssPanel.repaint();//重绘面板
	    }
	}

	public static void main(final String[] args) {
            final Gss gaa = new Gss();
            gaa.setVisible(true);// 让窗体显示出来
            
        }

}
import java.awt.Graphics;
import java.io.IOException;
import java.nio.CharBuffer;

import javax.swing.JPanel;

/*
窗体的面板类,
在这面板上,我们绘制图形
*/
public class GssPanel extends JPanel implements Readable {
    
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    Gss gaa;// 把窗体对象当做一个属性
    Thread t;//线程
    int sleep = 20;//每一帧的停顿时间(ms)
    /**
     * 面板类的构造器
     * @param gaa
     */
    public GssPanel(final Gss gaa) {
        this.gaa = gaa;
        this.gaa.setup();
        //开启一个线程
        t = new Thread();
        t.start();//启动线程
    }

    @Override
    public void paint(final Graphics g) {
        gaa.draw(g);//绘制工作转交给上层窗体
    }

	@Override
	public int read(final CharBuffer cb) throws IOException {
	
		return 0;
	}

   
    }

为什么我的车车不能动呢?!

开车?我AE86


原来我开的是手波。。。。

回过头来才发现,一开始打的代码自己打错了哈哈哈
严谨的java不得不让我更加细心才行啊!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值