Я делаю проект, где мне нужны некоторые настраиваемые компоненты поворота. До сих пор я создал новую кнопку с серией изображений (внешний вид Java Metal не соответствует моему пользовательскому интерфейсу). Ive внедрил MouseListener
в этот новый компонент, и именно здесь возникает моя проблема. Мой виджет меняет изображение при наведении, нажимает и т. Д., За исключением того, что мой MouseListener
берет запись мыши во весь контейнер GridLayout
вместо изображения. Таким образом, у меня есть изображение около 200 * 100, а окружающий контейнер составляет около 400 * 200, а метод mouseEntered
запускается, когда он входит в этот раздел GridLayout
(даже пустые части пространства) вместо изображения. Как я могу сделать это так, чтобы он срабатывал только при наведении курсора на изображение? Ive попытался установить размер, границы и другие атрибуты безрезультатно.Java swing JComponent "size"
EDIT: Вот демонстрация моей проблемы. Как вы можете видеть (вид, цвета очень похожи), нижняя правая кнопка подсвечивается просто путем ввода ее раздела GridlLayout
. Я хочу, чтобы это было подчеркнуто, когда я над изображением, а не раздел GridLayout
.
Я не буду добавлять MouseListener
метод, потому что они просто связаны с переключением изображений на экране.
public customWidget()
{
this.setLayout(new FlowLayout());
try {
imageDef=ImageIO.read(new File("/home/x101/Desktop/buttonDef.png"));
imageClick=ImageIO.read(new File("/home/x101/Desktop/buttonClick.png"));
imageHover=ImageIO.read(new File("/home/x101/Desktop/buttonHover.png"));
current=imageDef;
} catch (IOException e)
{
e.printStackTrace();
}
this.addMouseListener(this);
}
protected void paintComponent(Graphics g)
{
super.paintComponents(g);
g.drawImage(current, 0, 0, current.getWidth(), current.getHeight(), null);
}
EDIT: добавлен раздел кода
, пожалуйста, разместите самодостаточный образец кода ...упрощает просмотр того, что вы пытаетесь сделать ... и проще найти проблему ... –
Что такое суперкласс «customWidget»? Кроме того, где ваш контейнер «GridLayout» настроен? –
customWidget расширяет JComponent. GridLayout настраивается в тестовой программе im, используемой для проверки виджета. Поставит изображение, чтобы продемонстрировать. – Alex