JAVA怎么让图片翻转?

我想点击按钮就让图片翻转。可是只能翻转一次是怎么回事////


这里点按钮只能翻转一次,然后再点就不变了

图片说明

代码



public class My4 extends JFrame{

    public My4() {

        setVisible(true);
        setBounds(0, 100, 500, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("图像翻转");
        add(new MyPanels());
        validate();
    }
    //-------------------------------------------------------------
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new My4();
    }

}

class MyPanels extends JPanel implements ActionListener{
    private int w;//图片长度
    private int h;//图片宽

    BufferedImage image;
    JButton button1;
    Graphics2D g2;
    boolean change=false;

    public MyPanels() {

        button1=new JButton("翻转");
        add(button1);
        button1.addActionListener(this);

        try {
            image=ImageIO.read(new File("D:\\素材\\恐龙1.png"));
            w=image.getWidth();
            h=image.getHeight();

        } catch (IOException e) {

            e.printStackTrace();
        }
    }
    @Override
    public void paint(Graphics g) {
        // TODO Auto-generated method stub
        int t=1;
        super.paint(g);
        g2=(Graphics2D) g;


        if(!change) {
            g2.drawImage(image, 30, 30, w, h, this);
        }
        //shx:水平方向的倾斜量; shy:垂直方向的倾斜量。
        //p.shear(0.3, 0);
        //g2.drawImage(image, p, this);

        //图像向X轴移动10px,Y轴移动50px
        //tr.translate(40, 50);
        //旋转30度
        //tr.rotate(30*3.14159/180);


        //System.out.println(change);
        else {
        //是这里有问题吗

            System.out.println("改");
            AffineTransform p = new AffineTransform();
            p.scale(-1,1);     //向反反向缩放-1
            p.translate(-(w+60), 0);
            g2.setTransform(p);
            g2.drawImage(image, 30, 30, w, h, this);

        }

    }
    //实现接口
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==button1) {
            change=true;
            repaint();

        }

    }


}


1个回答

用一个 isCanRotate =true 表示,点击事件中根据该标识判断是否需要翻转,第一次触发翻转后修正标识为 flase ,以后就不再翻转》

if(isCanRotate){
  //翻转
    isCanRotate = false;
}else{
  //不翻转
    return;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问