gpt4 book ai didi

Java Paint 组件不工作

转载 作者:行者123 更新时间:2023-12-01 19:04:27 25 4
gpt4 key购买 nike

这是代码,正方形会渲染但不会移动,即使它应该渲染每个循环。问题似乎出在 Core 类的 run() 中

    package com.game;

import java.awt.*;
import javax.swing.*;

public class Core implements Runnable{
private static boolean running = true;
public static JFrame frame = new JFrame();
public static void main(String[] args) {
frame.setResizable(false);
frame.setBounds(100,100,600,400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
start();
}





package com.game;

import java.awt.Graphics;

import javax.swing.JPanel;

public class Paint extends JPanel{
public static int x = 10;
public void paintComponent(Graphics g){
super.paintComponent(g);

g.fillRect(x,10,100,100);
}
}


private static void start() {
running = true;
Thread thread = new Thread(new Core());
thread.setPriority(Thread.MAX_PRIORITY);
thread.start();
}

@Override
public void run() {
Paint p = new Paint();
Container pane = frame.getContentPane();
while(running){
pane.add(p);
pane.show();

System.out.println(Paint.x);
try {
Thread.sleep(100);
} catch (Exception e){}
}
}
}

抱歉,如果代码在任何方面都很烦人,我不知道应该如何格式化它......

最佳答案

您正在while(运行)循环:

while(running){
pane.add(p);
pane.show();
//....
}

正在踩住 Swing 事件线程并阻止该线程执行其操作 - 绘制 GUI 并与用户交互。如果您希望在 Swing 应用程序中重复行为,请不要使用 while (true) 循环,而应使用 Swing 计时器。

关于Java Paint 组件不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10675311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com