Полное заявление об отказе от ответственности: Я студент CS, и этот вопрос связан с недавно назначенной программой Java для объектно-ориентированного программирования. Хотя мы сделали некоторые вещи в консоли, это первый раз, когда мы работали с графическим интерфейсом и Swing или Awt. Нам был предоставлен некоторый код, который создал окно с некоторым текстом и кнопкой, которая поворачивалась в разные цвета для текста. Затем нас попросили изменить программу для создания переключателей для цветов вместо этого - это также предназначалось для того, чтобы дать нам возможность исследовать API. Я уже передал свое задание и получил разрешение от моего инструктора разместить здесь свой код.Включение действия кнопки/реализации кнопки
Каков наилучший способ реализации действий кнопок в Java? После того, как некоторые пустячный вокруг, я создал кнопки, как это:
class HelloComponent3 extends JComponent
implements MouseMotionListener, ActionListener
{
int messageX = 75, messageY= 175;
String theMessage;
String redString = "red", blueString = "blue", greenString = "green";
String magentaString = "magenta", blackString = "black", resetString = "reset";
JButton resetButton;
JRadioButton redButton, blueButton, greenButton, magentaButton, blackButton;
ButtonGroup colorButtons;
public HelloComponent3(String message) {
theMessage = message;
//intialize the reset button
resetButton = new JButton("Reset");
resetButton.setActionCommand(resetString);
resetButton.addActionListener(this);
//intialize our radio buttons with actions and labels
redButton = new JRadioButton("Red");
redButton.setActionCommand(redString);
...
И добавил действий слушателей ...
redButton.addActionListener(this);
blueButton.addActionListener(this);
...
Заглушка уже созданы для метода actionPerformed, чтобы дать нам представление о том, как используйте его, но поскольку в шаблоне была только одна кнопка, было непонятно, как реализовать несколько кнопок. Я попытался включить String, но быстро понял, что, поскольку String не является примитивным типом, я не мог использовать его для оператора switch. Я мог бы импровизировать с цепочкой if-else, но вместо этого я пришел к этому. Это кажется далеким от элегантности, и должен быть лучший способ. Если есть, что это? Есть ли способ включить строку? Или выбрать действие более масштабируемым способом?
public void actionPerformed(ActionEvent e){
if (e.getActionCommand().equals(resetString)) {
messageX = 75; messageY = 175;
setForeground(Color.black);
blackButton.setSelected(true);
repaint();
return;
}
if (e.getActionCommand().equals(redString)) {
setForeground(Color.red);
repaint();
return;
}
if (e.getActionCommand().equals(blueString)) {
setForeground(Color.blue);
repaint();
return;
}
if (e.getActionCommand().equals(greenString)) {
setForeground(Color.green);
repaint();
return;
}
if (e.getActionCommand().equals(magentaString)) {
setForeground(Color.magenta);
repaint();
return;
}
if (e.getActionCommand().equals(blackString)) {
setForeground(Color.black);
repaint();
return;
}
}
Как правильно обозначено плинтусом, это может быть несколько (много) за пределами вашего нынешнего уровня образования. Тем не менее, я уверен, что вы станете вашим преподавателем самым любимым учеником (дня), если вы сможете понять, что на самом деле происходит здесь ****. :-) – 2008-10-08 19:58:03
Я думаю, что я понимаю концепцию здесь, но я так не знаком с тем, как все эти методы и классы связаны с тем, что это немного сложно. Я попробую и посмотрю, смогу ли я хотя бы заставить его работать. Но ... actionPerformed метод, который является аргументом addActionListener? Или из ActionListener? – 2008-10-10 03:56:06