我使用paintComponents()来绘制JButtons同时绘制其他东西。它可以工作,但是我看到它一次又一次地绘制了一个按钮,当它被使用时,在右上方一瞬间。我用来绘制框架的代码如下。每当我打开一个JFileChooser时,我都会看到一些按钮被绘制到那个框架上,也是如此。
public void run() {
if(job) {
GameStateManager.swapState(GameStateManager.stateMainMenu);
} else {
screen = frame.createVolatileImage(pixel.width,
pixel.height);
}
while(isRunning) {
if(job) {
tick();
} else {
render();
}
try {
Thread.sleep(speed);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void render() {
Graphics g = screen.getGraphics();
frame.paintComponents(g);
GameStateManager.render(g);
g = frame.getGraphics();
g.drawImage(screen, 0, 0, frame.getWidth(),
frame.getHeight(), 0, 0, pixel.width, pixel.height,
null);
g.dispose();
}