我创建了一个名为 ImagePanel 的自定义JPanel类。我重写了paintComponent方法,就像这样...
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(image, 0,0, null);
}
自定义面板的目的是简单地绘制图像。
在我的JFrame中,我创建了一个添加到JFrame的ScollPane。当我创建ScrollPane时,我传入了我的imagePanel的实例,就像这样......
ip = new ImagePanel();
JScrollPane jsp = new JScrollPane(ip);
this.add(jsp);
现在我只想用一种简单易用的方式使用滚动条滚动我的图像。现在图像非常大,滚动条不会出现。我使用该策略使它们可见,但滚动条的句柄不存在。
有谁知道一个简单的方法吗?
答案 0 :(得分:1)
尝试JPanel#setPreferredSize(),如果需要,会强制JScrollPane
显示滚动条。
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(image, 0,0, null);
// set the size of the panel based on image size
setPreferredSize(new Dimension(image.getWidth(), image.getHeight()));
}
修改强>
在被覆盖的setPreferredSize()
内设置paintComponent()
不是一个好方法。
您可以按照JLabel
的建议,使用@mKorbel
以更简单的方式执行此操作。有关详细信息,请查看以下评论。
BufferedImage image = ...
JLabel label = new JLabel(new ImageIcon(image)); // set the icon
JScrollPane jsp = new JScrollPane(label);
截图: