2017-06-17 64 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