Кнопка внутри качели Rectangle2D.double - PullRequest
0 голосов
/ 05 января 2010

У нас есть свинговое приложение, которое отображает много прямоугольников. Мы используем класс Rectangle2D.double для рисования прямоугольников на JPanel. Мое требование заключается в следующем. После нажатия на прямоугольник я должен выбрать изображение из локальной файловой системы и показать его во всплывающем окне или в рамке. У меня вопрос, как я могу предоставить гиперссылку или кнопку внутри этого прямоугольника Rectangle2D.double. Пожалуйста, дайте мне знать.

Спасибо -Jad.

Ответы [ 2 ]

1 голос
/ 05 января 2010

Надеюсь, это то, что вы имеете в виду:

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.

0 голосов
/ 05 января 2010

Вы хотите поместить MouseListener на панель, которая будет ловить все клики в любом месте панели. Затем вы можете получить местоположение клика по событию и определить, в каком прямоугольнике произошел щелчок, а затем вызвать код, подходящий для этого события и местоположения.

...