我似乎找不到可以用来轻松在JPanel中显示图像的Java Swing库,并允许用户滚动,平移和缩放。有任何想法吗?感谢。
我目前正在使用以下代码在JPanel中显示图像,但它非常基本。
我真的很想快速介绍缩放,滚动和平移功能。
final BufferedImage img;
try
{
img = ImageIO.read(image_file);
}
catch (IOException e)
{
throw new XCustomErrorClass("Could not open image file", e);
}
JPanel image_panel = new JPanel(new BorderLayout(0, 0))
{
protected void paintComponent(java.awt.Graphics g)
{
super.paintComponent(g);
g.drawImage(img.getScaledInstance(getWidth()-20,-1, Image.SCALE_FAST), 10, 10, this);
};
};
答案 0 :(得分:2)
要进行滚动,请将面板放入JScrollPane。
对于缩放和平移,您可以根据鼠标侦听器中维护的某些变量转换paintComponent中的Graphics2D对象。像这样:
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
// Backup original transform
AffineTransform originalTransform = g2d.getTransform();
g2d.translate(panX, panY);
g2d.scale(zoom, zoom);
// paint the image here with no scaling
g2d.drawImage(img, 0, 0, null);
// Restore original transform
g2d.setTransform(originalTransform);
}