我有一個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