在ActionListener之后缩放图像

时间:2013-10-18 16:59:37

标签: java swing actionlistener paintcomponent graphics2d

我尝试创建一个图像视图程序,并在Java Image的放大和缩小方面遇到问题:D

我创建了一个JPanel并使用BufferedImage在我的计算机中显示图像。单击按钮后,应该进行缩放。 但是在这里的问题是,我在JPanel中重载paintComponent()方法以显示我想要的图像。在谷歌搜索后,我想我应该使用Graphic2D来解决这个问题。关注this帖子,

Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, newImageWidth , newImageHeight , null);

应该放在重载方法paintComponent()中。在我的情况下,我希望在单击按钮后缩放图像,那么,如何访问paintComponent()来进行缩放?

public class MiddlePanel extends JPanel {
private BufferedImage img;
private JButton jbtZoom = new JButton("Zoom");

public MiddlePanel(int width){            

    img = ImageIO.read(new FileInputStream(new File("C:\\Picture\\pic1.jpg")));

    this.setPreferredSize(new Dimension(800,460));        
}

public void paintComponent(Graphics g) {
    g.drawImage(img......);
}

public void addComponentActionListener(){
    jbtZoom.addActionListener(new ActionListener{
        public void actionPerformed(){
            //What should I do in here to zoom the image....
        }
    });
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

你需要改变你的设计:

  • 将变量状态存储在变量中,然后存储 重写的paintComponent方法应该查看该变量 决定是否放大/放大多少。
  • 您的ActionListener将更新变量,然后调用repaint() 小组。