Есть несколько способов, вы можете справиться с этим:
Создать класс самостоятельно и расширяет его JComponent
class ClickableImage extends JComponent implements MouseListener
{
private BufferedImage img;
//Include all the overridden methods for MouseListener
@Override public void mouseClicked(MouseEvent e){
//To do upon clicking on image;
}
}
Вы можете установить изображение на JButton. Добавьте ActionListener для этих JButton (s).
Используйте BufferedImage для своего изображения, определите щелчок по этому изображению с помощью положения курсора мыши.
class ClikableImage extends Rectangle{
private BufferedImage img;
//You can include any other class members you need.
public MyClickableImage(int x, int y, int width, int height){
setBounds(x, y, width, height);
}
}
Для обнаружения нажмите на конкретное изображение, итерацию по списку ClickableImage и проверьте, содержит ли что ClickableImage курсор мыши координаты.
//Within a MouseListener
for(ClickableImage ci : list)
if(ci.contains(e.getX(), e.getY()))
clickedImage = ci;
* «есть лучший подход?» * Один 'ActionListener' прилагается ко многим кнопок, которые использует' Event.getSource() ', чтобы выяснить, какие кнопки (и, следовательно, какое изображение) была нажата, или' JList 'для отображения всех изображений. Вот [пример показа изображений в списке] (http://stackoverflow.com/a/9544652/418556). –
Вы также можете посмотреть JButton.setIcon (новый ImageIcon (...)). .. – ControlAltDel
Я также хочу сделать изображение растяжимым. Могу ли я использовать мышь на кнопках и менять ширину кнопок на событиях мыши? –