在JComponent
的子類中,我優先於paintComponent
繪製方法。重寫的方法首先要調用super.paintComponent
,因爲大多數文本告訴我這樣做。有人說這是必要的,以便其他JComponents
可以自己畫。但是,調用super方法會清除圖像,並使用背景色填充圖像。我不希望發生這種情況。如果我跳過呼叫超級方法,我可以自由選擇是否要撥打防止super.paintComponent調用clearRect
g.setColor(getBackground());
g.fillRect(0, 0, getWidth() - 1, getHeight() - 1);
爲了在重畫之前清除圖像。
但是,我擔心通過跳過超級方法,我會跳過超級方法所做的其他重要操作。我如何確保執行其他重要操作時允許自己選擇是否要清除圖像?
編輯:
這裏是我的paintComponent:
public void paintComponent(Graphics g) {
super.paintComponent(g); // necessary so other panels can paint themselves.
// g.setColor(getBackground());
// g.fillRect(0, 0, getWidth(), getHeight());
// g.setColor(Color.black);
if (down) {
g.drawLine(downX, downY, currentX, currentY);
}
}
它只是吸引了來自當用戶按下鼠標按鈕,在鼠標被拖到線。如果鼠標拖曳,則線條移動。如果鼠標被釋放,它不會畫任何東西。
事實上,如果鼠標被釋放,程序將擦除用戶正在繪製的線條。我不希望這個計劃能夠這樣做,這樣會有一些線條。
請告訴我們更多關於你目前的問題。我仍然不確定你的程序爲什麼會這樣。你可以顯示你的整個'paintComponent'方法嗎? – 2012-03-04 00:23:38