Я новичок в Java.Координаты нескольких кнопок Java
Я делаю мин. Я использую GridLayout с параметрами (x_length, y_length). Я хотел бы знать, какую кнопку я нажал -> его координаты (x, y). Но если я напечатаю его слушателю, он даст мне ошибку -> изменить модификатор 'x' в final. Итак, мой вопрос: как я могу просто получить координаты кнопок?
И еще я хочу спросить, как я могу просто изменить размер кнопок? setSize не работает для меня.
for (int y = 0; y < y_length; y++)
{
for (int x = 0; x < x_length; x++)
{
buttons[x][y] = new JButton("X");
buttons[x][y].addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
if (e.getButton() == MouseEvent.BUTTON1)
{
//exception -> Cannot refer to a non-final variable x inside an inner class defined in a different method
JOptionPane.showMessageDialog(null, "Left -> " + x + " | " + y);
}
else if (e.getButton() == MouseEvent.BUTTON3)
{
JOptionPane.showMessageDialog(null, "Right -> " + x + " | " + y);
}
}
});
mines_array.add(buttons[x][y]);
}
}
1) Для лучшей помощи раньше, опубликовать [SSCCE] (http://sscce.org/). 2) Лучше всего задать один вопрос на вопрос. 3) Менеджер компоновки, как правило, соблюдает предпочтительный размер компонента по размеру. 4) Скопируйте/вставьте сообщения об ошибках и вывод исключений и используйте на нем форматирование кода. 5) Возможно, что «ActionListener» лучше подходит для кнопок в этом графическом интерфейсе. Что оно делает? –
Вы не можете делать x и y 'final', поскольку они постоянно меняются в цикле. Что вы можете сделать (но это уродливый взлом, поэтому я не ставил его как ответ), помещается внутри вложенного цикла объявление: 'final int x2 = x; final int y2 = y' и ссылаются на 'x2' и' y2' внутри вашего слушателя. «ActionListener» более подходит и задает предпочтительный размер вместо размера, как сказал Эндрю. –