2015-01-02 3 views
0

Каков наилучший способ связать изображение в JPanel с mouseclick, чтобы что-то сделать? Я имею в виду, есть ли какая-нибудь функция в API, которая может это сделать? Если нет, то какое наилучшее решение?Связать изображение с mouseclick

Кстати, для вас, кто может быть удивлен, почему я прошу о помощи в этом вопросе, это то, что я делаю игру в Судоку, а мой код уже случайно генерирует все числа в матрице, проверяет, решение правильное, единственное, что еще не сделано, это интерфейс (пользователь выбирает квадрат, чтобы выбрать там номер). Спасибо.

ответ

2

«Лучший» способ? Используйте JLabel

Другой способ, использовать пользовательские JPanel, который отвечает за рендеринг одного изображения и рисуйте его через paintComponent метод панели

А «интересным» способом, использовать пользовательские JPanel рисовать все изображения, поддерживаются в некотором виде List, где каждое изображение связано с Rectangle, которое описывает местоположение и размер изображения. Когда нажимается панель, проведите через RectangleList и используйте метод contains для Rectangle, чтобы определить, произошло ли в нем событие мыши, с помощью индекса Rectangle, чтобы скопировать изображение (или использовать какой-либо Map для поддержки связь между ними)

Что вы делаете, зависит от того, какую работу вы хотите выполнять и какую функциональность вы намерены реализовать.

Присмотритесь на:

0

Будет ли интерактивного изображения помочь вам?

ImageView clickableImg = new ImageView(new Image(getClass().getResourceAsStream("graphics/image.png"))); 
Tooltip image_tooltip = new Tooltip("Maybe add a tooltip to it, as well"); 
Tooltip.install(clickableImg, image_tooltip); 
//Turn the cursor into a hand when hovering over it, too 
about.setStyle("-fx-cursor: hand;"); 
about.setOnMouseClicked(new EventHandler<MouseEvent>() { 
    @Override 
    public void handle(MouseEvent mouseEvent) { 
     System.out.println("The image was clicked!"); 
    } 
}); 
+0

Ahhhhhh, Swing? – MadProgrammer

+0

@MadProgrammer JavaFX, дорогой! –

+0

Определенно помечены как вопрос Swing ... – MadProgrammer

0

Ну, вы могли бы сделать что-то вроде этого, чтобы определить, является ли мыши внутри определенной области (границы на изображении в):

public boolean isIn(int x,int y,int width,int height,int thex,int they){ 
    boolean b= 
      thex>=x 
      &&thex<=(x+width) 
      &&they>=y&& 
      they<=(y+height); 
    //b=true; 
    return b; 
} 

где: х является й-координата верхний левый угол у- у-координата верхнего левого угла ширина ширина высота изображения является высота изображения

и х и у равны х и у-координаты щелчок мышью.

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

+0

Или вы можете использовать 'java.awt.Rectangle' для сохранения местоположения и размера каждого изображения и использовать его' contains (Point) 'method ... но я просто ленив;) – MadProgrammer

Смежные вопросы