2017-06-17 98 views
1

這是我的代碼。我在水平滾動時發現一些查看問題,直到我致電scroll.repaint()。 (JScrollPanel滾動位於另一個JPanel調用面板內)。水平塗料問題JScrollPane

JPanel pan=new JPanel("My Panel"); 
pan.setPreferredSize(new Dimension(XMIN,YMIN)); 
JScrollPane scroll=new JScrollPane(pan,JScrollPane.VERTICAL_SCROLLBAR_NEVER,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
pan.setSize(XPAN,YPAN); 
scroll.setBounds(0,100,XMIN,YMIN); 
//...stuff, I put elements in my JPanel pan. 
pan.setPreferredSize(new Dimension(x>XMIN?x+deltaX:XMIN,YMIN)); 
pan.revalidate(); 
panel.add(scroll); 
scroll.repaint(); 
panel.repaint(); 

有一個簡單的方法來解決JScrollPane的,並一直是我在JScrollPane的項目一個明確的說法滾動甚至當?

回答

2

這是與非透明元素的一個問題,在默認情況下JCheckBox的不是不透明... 現在它工作得很好:)

+0

以我的經驗Swing組件在默認情況下(除了一個JLabel)不透明的,除非你是使用一些奇怪的LAF。我懷疑你真正的問題是你正在使用空佈局。不要使用空佈局。 Swing旨在與佈局經理一起使用。另外,不要使用setPreferredSize()。確定尺寸是佈局經理的工作。也不需要所有的revalidate()和repaint()方法。所有Swing組件都應添加到框架之前,使框架可見。 – camickr