我有一個JPanel
在這裏,我想跟蹤我給玩家的一些猜測。JPanel drawString離開字符串
每次調用paintcomponenent時都會顯示猜測。這是代碼:
@Override
public void paintComponent(Graphics g){
if(stop) {
g.drawString("YOU RAN OUT OF GUESSES. YOU LOSE!", getWidth()/2 - 150, getHeight()/2 - 5);
return;
}
for(Block block : blocks){
block.draw(g);
}
g.setColor(Color.LIGHT_GRAY);
g.fillRect(650, 650, 100, 100);
g.setColor(Color.BLACK);
g.drawRect(650, 650, 100, 100);
g.drawString("CHECK", 680, 705);
g.drawString("Guesses Left: " + guesses, 100, 100);
}
什麼情況是,從的repaint()
以前調用吸引到導致該方法被稱爲不消失的字符串。
這意味着在「猜對了:」之後的數字在數字開始相互疊加(從10開始並在調用該方法之前下行)之後變得不可讀。
我不明白爲什麼這應該是一個問題。我遇到的類似問題是,如果停止布爾值爲true,則應該退出該方法,而不是繪製其餘的形狀。儘管如此,所有這些形狀仍然繪製。
有人能幫我弄清楚我做錯了什麼嗎?這裏是我的兩個問題截圖:
而且,通過在一些偶然的測試,我發現,如果窗口大小,所有其他形狀消失,只有文字留下。
我是否對重繪方法的工作原理產生誤解?我的高中java老師告訴我,它實質上只是回憶起paintComponent()
的方法,但如果這不正確,我不會感到驚訝。
你可能想看看[在AWT和Swing繪畫(http://www.oracle.com/technetwork/java/painting-140037.html)和[表演自定義繪畫](http://docs.oracle.com/javase/tutorial/uiswing/painting/)以更好地瞭解繪畫在Swing中的工作原理 – MadProgrammer
@ NuffsaidM8你可以看看[什麼是super.paintComponent( g)做?](http://stackoverflow.com/questions/28724609/what-does-super-paintcomponentg-do) – user3437460
@ NuffsaidM8'但我不會感到驚訝,如果這是不正確的.''你似乎有一點點對你的老師有信心.. – user3437460