Tag:

我的覆盖绘制方法没有被调用

我有一个JPanel,可以作为我游戏的HUD,当然,我已经覆盖了paint方法来做我自己的自定义显示,这确实被调用,但只有在resize或最大化时,最小化框架,而不是在我的游戏循环告诉它重绘()。 由于我的另外两个面板被重新绘制得很好,我觉得特别奇怪。 这是我的HUD课程: package base; import java.awt.Color; import java.awt.Graphics; import javax.swing.BoxLayout; import javax.swing.JPanel; public class HUD extends JPanel { private Shiphud[] shiphuds; public HUD(Ship[] ships) { shiphuds = new Shiphud[ships.length]; this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); for (int i = 0; i < shiphuds.length; i++) { shiphuds[i] = new Shiphud(ships[i]); this.add(shiphuds[i]); } } @Override public void paint(Graphics g) […]

用Java重新连续重绘

我有一个使用线程的Java程序。 在我的run方法中,我有: public void run() { while(thread != null){ repaint(); System.out.println(“hi”); try { Thread.sleep(1000); } catch (InterruptedException e) { break; } } } public void paintComponent(Graphics g) { // painting stuff } 问题是执行了run方法,但是没有调用paintComponent部分。 如果这不是重新制作组件的正确方法,那么我应该如何重新绘制它呢?