Я делаю игру на Java, и я делаю меню выбора персонажа. В этом меню у меня есть символы, и если пользователь нажимает на определенный символ, появляется JOptionPane.showMessageDialog, показывает статистику персонажа. Таким образом, мой вопрос заключается в том, что человек нажимает "ok", который автоматически создается при использовании функции, как я могу ее выбрать, чтобы выбрать символ?
JButton chuck = new JButton(new ImageIcon("8bitChuckNorris.jpg"));//this part of program runs this if user picks lizard
chuck.setSize(210,175); //sets size of button
chuck.setLocation(300,317); //sets location of button
chuck.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent e) {
JOptionPane.showMessageDialog(null, "\t\tSTATS\nAttack\ndefence\nspecial");
}
});
Простейший метод, вероятно, заключается в том, чтобы предоставить метод, который может вызвать ActionListener
после закрытия панели параметров, например...
chuck.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent e) {
JOptionPane.showMessageDialog(null, "\t\t STATS\nAttack\ndefence\nspecial");
characterSelected("chuck"); // Pass whatever you need to identify the character
}
});
обновленный
Было бы проще использовать JOptionPane.showConfirmDialog
поскольку он фактически вернет результат int
представляющий опцию, которую пользователь выбрал (или -1, если они отклонили диалог, не выбрав ничего)
switch (JOptionPane.showConfirmDialog(null, "\t\t STATS\nAttack\ndefence\nspecial", "Character", JOptionPane.OK_CANCEL_OPTION)) {
case JOptionPane.OK:
// Process selection...
break;
}
JOptionPane@showConfirmDialog
actionPerformed
может вызвать после того, какJOptionPane
может вызватьnull
макеты. Макеты Pixel Perfect - это иллюзия в современном дизайне пользовательского интерфейса, у вас нет контроля над шрифтами, DPI, конвейерами рендеринга или другими факторами, которые изменят способ визуализации компонентов на экране. Swing был разработан для работы с менеджерами верстки для преодоления этих проблем. Если вы настаиваете на игнорировании этих функций и работаете против дизайна API, будьте готовы к многочисленным головным болям и никогда не прекращайте тяжелую работу ...