在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输出的结果是这样的…
然后用VScode运行是这样的…
视频中编译运行出来是这样的…
不甘心的我无意中看到了一篇博客…
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
于是我对照着他的改进了一下我的代码…
然后运行…
左边的窗口是左边代码的,右边的窗口是右边代码的。
激动!!
这是我Java伟大的第一步…
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不得不让我更加细心才行啊!!!