2012-07-09 139 views
0

有時(並非總是)在滾動我的JScrollPane的欄時,某些組件(通常是像JLabels這樣的文本)不能正確重繪,最終只能部分呈現。Swing:JScrollPane導致呈現問題

我不知道這是爲什麼。我試過在AdjustmentListener中調用paint(),但這似乎沒有幫助。

任何想法?

編輯:組件的任何的這些基本原則

panel = new JPanel(); 
    ImageIcon img = new ImageIcon("editor.png"); 
    setIconImage(img.getImage()); 
    initComponents(); 

    final JScrollPane pane = new JScrollPane(panel); 
    this.setContentPane(pane); 
    //pane.setLayout(new ScrollPaneLayout()); 
    //pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 
    Dimension dim = panel.getSize(); 
    dim.height = dim.height - 100; 
    pane.setSize(dim); 
    this.setSize(dim); 
    AdjustmentListener hListener = new AdjustmentListener() { 
     @Override 
     public void adjustmentValueChanged(AdjustmentEvent e) { 
      repaint(); 
      for(Component c : panel.getComponents()) 
       c.repaint(); 
      for(Component c : pane.getComponents()) 
       c.repaint(); 
      panel.repaint(); 
      panel.revalidate(); 
      pane.repaint(); 
      pane.revalidate(); 
     } 
    }; 
    pane.getVerticalScrollBar().addAdjustmentListener(hListener); 
    panel.setVisible(true); 
    pane.setVisible(true); 
+1

你可以發表一些代碼嗎? – mprabhat 2012-07-09 03:41:47

+0

發佈的代碼不會重現問題,也不能看到它提示問題的原因。考慮創建併發布[sscce](http://sscce.org)。 – 2012-07-09 03:45:58

+0

嗯,我不確定該怎麼做,我不想發佈我的整個initcomponents(),它會太大。除了我發佈的內容,我只是啓動組件並將它們添加到'面板' – Blackvein 2012-07-09 03:47:25

回答