2011-07-18 34 views
1

調用一個JPanelrepaint()ActionListener的一個JCheckBox後,JPanel有一些... ...問題解決,他們身在最小化和恢復,不過這是我的客戶一個麻煩。 關於如何解決這個問題的任何想法?的JPanel重繪行爲不端

enter image description here

代碼如下

  JCheckBox curr = new JCheckBox(choices.get(a)); 
      curr.addActionListener(new ActionListener() { 
       public void actionPerformed(ActionEvent e) 
       { 
        //System.out.println(((JCheckBox)e.getSource()).getText()); 
        if (specs.getSelectedItem()!=null&&!specs.getSelectedItem().toString().isEmpty()) 
        { 
         String strSpec = specs.getSelectedItem().toString(); 
         if (strSpec.matches("\\w+\\s\\w+")) 
         { 
          Time x = GraphCreator.parseTime(strSpec); 
          GC.getGraph(x); 
          GC.getGraph(x, new Team(((JCheckBox)e.getSource()).getText())); 
         } 
         else 
         { 
          GC.getGraph(new Team(((JCheckBox)e.getSource()).getText()),strSpec.trim()); 
         } 
        } 
        pane.repaint(); 
       } 
      }); 
+0

你可以顯示一些你調用repaint()的代碼嗎?也許你的ActionListener的代碼? – rtheunissen

+0

對不起,只是沒有想到這將是多大的幫助:\ –

+0

無後顧之憂。但你永遠不知道。 :) – rtheunissen

回答

1

pane.validate()pane.repaint()可以工作。但是,只有當您添加和刪除會導致佈局受到影響/更改的組件時纔會這樣。

+0

同樣的事情,它沒有對任何角落裏的神器做任何事情。 :\ –

+0

實際上它在jframe上調用repaint來修復。奇怪我知道,但它似乎工作。 this.repaint(10,0,0,的getWidth(),的getHeight()); –

+0

需要10ms嗎?在父組件上調用repaint(),即。你的JFrame是一個聰明的主意。試試只是重繪()? – rtheunissen

1

招應該是

pane.revalidate(); 
pane.repaint(); 
+0

嘗試了他們,沒有任何東西,它仍然給我在角落裏那個討厭的神器。 –

+0

@if_zero_equals_one 1)你忘了刪除一些Jcomponent,2)你必須使用LayoutManager發佈http://download.oracle.com/javase/tutorial/uiswing/layout/index.html,3)確保沒有看到你的代碼的任何東西(非常短的可運行代碼)只能拍到黑暗的 – mKorbel