2015-06-12 68 views
1

我有這個程序,我有一個窗口中有2個圓圈的畫布(你可以通過點擊畫布移動其中一個圓圈)。Java重畫更新只是我畫布的一部分

它的工作原理與Windows和iOS沒有問題,但對Ubuntu的這個問題:

當我改變在窗口左上角的下拉框選擇的圓圈,圓圈消失,只可見在組合框項目覆蓋的區域的畫布左上角,在我將所選圓圈對齊之前。

此外,當我拖動應用程序窗口使其離開屏幕或在窗口上放置另一個窗口時,圓圈開始在隱藏的畫布部分可見。

你能解釋一下,爲什麼會發生這種情況,我做錯了什麼?

我的程序的代碼是在這裏:http://pastie.org/private/rm0gw2awx6d7iztyabzs7q

+0

也許是因爲我用帆布代替的JPanel。但是當我做出JPanel的時候,當我移動這個圓時,它開始做些瘋狂的事情。 – dannymo

+0

在iOS上工作,這是相當偉大的 – MadProgrammer

+0

你打破了塗料鏈,你應該調用super.paint,但在JPanel的情況下,你應該重寫paintComponent(並調用super.paintComponent) – MadProgrammer

回答

0

很難給出任何想法(在一段代碼並不短)。在我的系統(Cinnamon 2.4.8)上,一切都很完美。無論如何,添加super.paint()不需要太多的努力,不會傷害任何東西。

以下是有趣的:你直接在main()方法中創建你的框架。但現在搖擺/ AWT主框架應在事件隊列創建:

public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new BlochovyKruhy2(); 
     } 
    }); 
} 

,而不是

public static void main(String[] args) { 
    new BlochovyKruhy2(); 
}