我的绘画方法是这样的。
public void paint (Graphics g)
{
while (cardChosen != 'a');
{
g.drawImage (selectionBG, 0, 0, 1960, 677, null);
g.drawImage (duelSGX, x_coordinate, y_coordinate, 483, 677, null);
g.drawImage (Ultor, x_coordinate + 777, y_coordinate, 483, 677, null);
g.drawImage (Seirin, x_coordinate + 777 * 2, y_coordinate, 483, 677, null);
g.drawImage (Rowgen, x_coordinate + 777 * 3, y_coordinate, 483, 677, null);
g.drawImage (Ronel, x_coordinate + 777 * 4, y_coordinate, 483, 677, null);
g.drawImage (Ophelia, x_coordinate + 777 * 5, y_coordinate, 483, 677, null);
g.drawImage (Narza, x_coordinate + 777 * 6, y_coordinate, 483, 677, null);
g.drawImage (Michele, x_coordinate + 777 * 7, y_coordinate, 483, 677, null);
g.drawImage (Maxwell, x_coordinate + 777 * 8, y_coordinate, 483, 677, null);
g.drawImage (MageDEAN, x_coordinate + 777 * 9, y_coordinate, 483, 677, null);
g.drawImage (Kuda, x_coordinate + 777 * 10, y_coordinate, 483, 677, null);
g.drawImage (Gravion, x_coordinate + 777 * 11, y_coordinate, 483, 677, null);
}
}
我也有这个。
if (ev.getKeyCode () == KeyEvent.VK_A)
cardChosen = 'a';
repaint ();
现在考虑到这一点,当我按下'a'并且在我放手时出现时,我画的所有东西都不会消失吗? 它没有。图片显示,向上和它滞后。
答案 0 :(得分:1)
你的paint(...)方法应该是:
public void paint(Graphics g)
{
super.paint(g); // to clear the background
// add your code here
}
答案 1 :(得分:1)
你有危险的代码:你在绘画方法中有一个while (true)
循环,这将使GUI陷入可耻的停顿。永远不要那样做。代替
paintComponent(...)
方法中使用Swing并绘制。paintComponent(...)
方法。通常这应该是paintComponent方法覆盖的第一行,这将删除旧图像。if (...)
块,然后在事件监听器中更改此块的状态,然后调用repaint()
。