我有一个JScrollPane内的JPanel的东西。我在JPanel中绘制事物,并且在某些时候我可能会绘制超过JScrollPane的宽度。在这种情况下,我希望水平滚动条出现,我希望能够滚动查看JPanel的不同部分。但是,我最终清除了JScrollPane。调整大小一个JScrollPane里面一个JPanel,清除我画上的JPanel
frame = new JFrame();
frame.setBounds(100, 100, 1000, 800);
localScrollPane = new JScrollPane();
localScrollPane.setBounds(768, 6, 226, 350);
frame.getContentPane().add(localScrollPane);
localView = new JPanel();
localScrollPane.setViewportView(localView);
drawSomeThings(localView.getGraphics());
// wait for user input
int newWidth = drawThingsPastTheWidth(localView.getGraphics());
// these next two lines clear it
localView.setPreferredSize(new Dimension(newWidth, localView.getHeight()));
localView.revalidate();
我在做什么错?谢谢!
不使用的getGraphics - 据我所知,这将只是生产出最有可能将超过涂(与补偿的背景)下一次的paintComponent在内部调用快照。相反,请保留产生绘图的状态并在paintComponent中从该状态重绘。如果速度太慢,请勾选bufferedImage并绘制图像(如果没有其他变化) – kleopatra