Java 水平JScrollPane的绘制问题

Java 水平JScrollPane的绘制问题,java,swing,jscrollpane,Java,Swing,Jscrollpane,这是我的密码。当水平滚动直到调用scroll.repaint()时,我注意到一些查看问题。(JScrollPanel滚动条位于另一个名为panel的JPanel中) 有没有一种简单的方法可以修复JScrollPane,并且即使在滚动时也可以始终清晰地查看JScrollPane中的项目?这是非不透明元素的问题,默认情况下JCheckBox不是不透明的。。。 现在它运行良好:)根据我的经验,Swing组件在默认情况下是不透明的(JLabel除外),除非您使用的是一些奇怪的LAF。我怀疑您真正的问题在

这是我的密码。当水平滚动直到调用
scroll.repaint()
时,我注意到一些查看问题。(JScrollPanel滚动条位于另一个名为panel的JPanel中)


有没有一种简单的方法可以修复JScrollPane,并且即使在滚动时也可以始终清晰地查看JScrollPane中的项目?

这是非不透明元素的问题,默认情况下JCheckBox不是不透明的。。。
现在它运行良好:)

根据我的经验,Swing组件在默认情况下是不透明的(JLabel除外),除非您使用的是一些奇怪的LAF。我怀疑您真正的问题在于您使用的是空布局。不要使用空布局。Swing设计用于布局管理器。另外,不要使用setPreferredSize()。布局管理器的工作是确定尺寸。也不需要所有的revalidate()和repaint()方法。在显示框架之前,应将所有回转组件添加到框架中。
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();