我想用鼠标拖动图像移动矩形,代码有什么问题

时间:2015-04-25 09:47:46

标签: java image swing graphics mouse

对以下代码的任何帮助......

我想用鼠标拖动图像移动矩形,代码有什么问题。 我是否需要绘制图像或Jlabel导致问题。

 public class imagecrop  extends JFrame  {
          int  x,y,width=90, height=96 ;

     public imagecrop(BufferedImage image) {
           super("Crop");           
        getContentPane().setLayout(null);
        setSize(546, 452);
        JLabel lblNewLabel = new JLabel(corner(image));
        lblNewLabel.setBounds(0, 0, 530, 382);
        getContentPane().add(lblNewLabel);
        JButton btnNewButton = new JButton("OK");
        btnNewButton.setBounds(220, 393, 89, 21);
        getContentPane().add(btnNewButton);
        setVisible(true);
    }

    private ImageIcon corner(BufferedImage image) {

        javaxt.io.Image image1 = new javaxt.io.Image(image);
        image1.setHeight(382);
        image=image1.getBufferedImage();
        ImageIcon image2 = new ImageIcon(image);

        addMouseMotionListener(new MouseAdapter()
        {

            @Override
            public void mouseDragged(MouseEvent e) {
                repaint();
                x=e.getX();
                y=e.getY();
        }});
        Graphics2D graph = (Graphics2D) image.getGraphics();
        graph.draw((Shape) new Rectangle( x, y, width, height));
        System.out.println(x+y);
        return image2;    
    }    
}

1 个答案:

答案 0 :(得分:2)

您实际上只需创建一次图像并将其存储在JLabel中。更改坐标后,不会重新创建图像。

我建议不要覆盖paintComponent()的{​​{1}}方法,并在方法中调用JLabel来反映更改。