Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA绘图矩形_Java - Fatal编程技术网

JAVA绘图矩形

JAVA绘图矩形,java,Java,我有这样的代码: public class TestPane extends JPanel { private Rectangle selection = new Rectangle(); private Point clickPoint; private BufferedImage tempimage; public TestPane() { try { tempima

我有这样的代码:

public class TestPane extends JPanel {

        private Rectangle selection = new Rectangle();
        private Point clickPoint;

        private BufferedImage tempimage;

        public TestPane() {
            try {
                tempimage = ImageIO.read(new File("/Users/droop//omega.jpg"));
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            MouseAdapter ma = new MouseAdapter() {

                @Override
                public void mouseDragged(MouseEvent e) {
                    int minX = Math.min(e.getX(), clickPoint.x);
                    int minY = Math.min(e.getY(), clickPoint.y);
                    int maxX = Math.max(e.getX(), clickPoint.x);
                    int maxY = Math.max(e.getY(), clickPoint.y);

                    selection.x = minX;
                    selection.y = minY;
                    selection.width = maxX - minX;
                    selection.height = maxY - minY;
                    repaint();
                }

                @Override
                public void mousePressed(MouseEvent e) {
                    clickPoint = new Point(e.getPoint());
                }

            };

            addMouseListener(ma);
            addMouseMotionListener(ma);
        }

        @Override
        public Dimension getPreferredSize() {
            return tempimage == null ? new Dimension(200, 200) : new Dimension(tempimage.getWidth(), tempimage.getHeight());
        }

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2d = (Graphics2D) g.create();
            int x = (getWidth() - tempimage.getWidth()) / 2;
            int y = (getHeight() - tempimage.getHeight()) / 2;
            g2d.drawImage(tempimage, x, y, this);
            if (selection.width > 0 && selection.height > 0) {
                g2d.setColor(new Color(0, 0, 255, 64));
                g2d.fill(selection);
                g2d.setColor(Color.BLUE);
                g2d.draw(selection);
            }
            g2d.dispose();
        }
    }
我想做的是:更改此代码,这样我就可以通过单击按钮来更改图片。所以我想创建我的测试窗格并放在框架上,但稍后通过单击按钮加载图像。 还有一个问题:有时图片太大,无法在测试窗格上显示,所以我添加了scrools,但是鼠标单击的x和y坐标与绘制形状不同步。当卷轴打开,我点击鼠标时,矩形就被画在上面而不是确切的位置。
请帮助

从和开始“有时图片太大,无法在TestPane上显示,因此我添加了scrools,但鼠标单击的x和y坐标与绘制形状不同步。当滚动条打开且我进行鼠标单击时,矩形将绘制在上方而不是确切的位置”-使用
JScrollPane
,它会自行处理其余部分,所以我知道如何使用JButtons,Action Listeners:P我尝试的是:我创建了一个按钮,我将所有图片放入一个数组中,然后用鼠标单击我更改图像并将其放在测试窗格中,所以我使用了以下代码:tempimage=ImageIO.read(新文件(“/Users/droop//omega.jpg”);从类中删除并更改它,因此每次单击按钮时,我都会在测试窗格上显示新的图片,但矩形中的绘图不起作用……那么也许你应该发布该代码,所以我将你的代码,更改图像,粘贴到滚动窗格中,调整了窗口的大小,使滚动条出现,选择突出显示对我来说很好。我喜欢你在网上找到的代码,哦,等等,那是我的。。。非常棒,不是吗;)