Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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 摆动矩形内的按钮2D.double_Java_Swing_Button_Hyperlink - Fatal编程技术网

Java 摆动矩形内的按钮2D.double

Java 摆动矩形内的按钮2D.double,java,swing,button,hyperlink,Java,Swing,Button,Hyperlink,我们有一个swing应用程序,它显示许多矩形。我们使用Rectangle2D.double类在JPanel上绘制矩形。 我的要求是这样。单击矩形后,我必须从本地文件系统中选择一个图像,并将其显示在弹出窗口或框架中。 我的问题是如何在矩形2D.double矩形内提供超链接或按钮。 请让我知道 谢谢 -Jad.您想在面板上放置一个鼠标侦听器,它将捕捉面板上任何地方的所有点击。然后,您可以从事件中获取单击的位置,并确定单击发生在哪个矩形中,然后调用适合该事件和位置的代码。我希望这就是您的意思: imp

我们有一个swing应用程序,它显示许多矩形。我们使用Rectangle2D.double类在JPanel上绘制矩形。 我的要求是这样。单击矩形后,我必须从本地文件系统中选择一个图像,并将其显示在弹出窗口或框架中。 我的问题是如何在矩形2D.double矩形内提供超链接或按钮。 请让我知道

谢谢
-Jad.

您想在面板上放置一个
鼠标侦听器,它将捕捉面板上任何地方的所有点击。然后,您可以从事件中获取单击的位置,并确定单击发生在哪个矩形中,然后调用适合该事件和位置的代码。

我希望这就是您的意思:

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;

public class RectButton extends JPanel {

    Rectangle2D.Double rect;

    public RectButton() {
        this.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                Point point = e.getPoint();
                System.out.println(checkRectArea(point));
                // Do whatever else you want here.
            }
        });
    }

    public boolean checkRectArea(Point point) {
        return rect.contains(point);
    }

    public void paint(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        rect = new Rectangle2D.Double(10, 10, 50, 50);
        g2.draw(rect);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        RectButton r = new RectButton();
        frame.add(r);
        frame.setSize(new Dimension(300, 300));
        frame.setVisible(true);
    }

}
此程序绘制一个矩形,如果在矩形内单击,则打印true,否则打印false