我在JScrollPane中有一个JPanel。我在JPanel中绘制内容,有时我可能会绘制超过JScrollPane的宽度。在这种情况下,我希望出现水平滚动条,并且希望能够滚动查看JPanel的不同部分。但是,我最终清除了JScrollPane。
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();
我究竟做错了什么?谢谢!
最佳答案
drawSomeThings(localView.getGraphics());
不要使用getGraphics()方法进行绘画。下次Swing确定需要重新粉刷组件时,粉刷将丢失。
而是通过重写组件的
paintComponent()
方法来完成自定义绘制。