Как обнаружить событие щелчка в классе изображения в Java? - PullRequest
2 голосов
/ 17 сентября 2011

Я практикую изучать Java, создав простую игру. В моей простой игре я хочу использовать класс изображений AWT , и я хочу щелкнуть по классу изображений, и появится диалоговое окно типа оповещения

.
public class Sample
{
    Image img = getImage(getClass().getResource("0.jpg"));

    void paint (Graphics g)
    {
        g.drawImage(img,30,30,this);
    }
}

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

Ответы [ 3 ]

8 голосов
/ 17 сентября 2011

Было бы лучше поискать Icon / ImageIcon для отображения изображения в JLabel . Тогда вам нужно только добавить и переопределить правильный метод из MouseListener для прослушивания щелчка мышью для JLabel.

4 голосов
/ 17 сентября 2011

Я написал функцию несколько дней назад:

public boolean isBetween(float x1, float y1, float x2, float y2, float objeX, float objeY) {
    if ((x1 <= objeX && x2 >=objeX) || (x1 >=objeX && x2<=objeX )) {
        if ((y1 <= objeY && y2 >=objeY) || (y2 <= objeY && y1 >=objeY))
            return true;
    }
    else {
        return false;
    }
}

Когда вы используете ее, дайте четыре точки изображения.И последние две точки - это точки нажатия.Вы должны добавить mouselistener.Когда происходит действие, вы проверяете точку нажатия с помощью функции isBetween.Если он возвращает true, ваше изображение было нажато.

0 голосов
/ 17 сентября 2011

Вы можете создать пользовательский JPanel, который имеет фоновое изображение (изображение, которое вы хотите). Затем вы можете использовать функциональность JPanel для прослушивания событий щелчка. Пользовательский JPanel может быть примерно таким (взято из здесь ):

class ImagePanel extends JPanel {

    private Image img;

    public ImagePanel(String img) {
        this(new ImageIcon(img).getImage());
    }

    public ImagePanel(Image img) {
        this.img = img;
        Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
        setPreferredSize(size);
        setMinimumSize(size);
        setMaximumSize(size);
        setSize(size);
        setLayout(null);
    }

    public void paintComponent(Graphics g) {
        g.drawImage(img, 0, 0, null);
    }
}

Для получения дополнительной информации о событиях, вы можете взглянуть на учебник Oracle Как написать компонентный слушатель .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...