Я недавно начал программировать на Java.Я хотел закодировать Окно, которое содержит:
- 1 Frame
- 1 Контейнер
- 2 JPanel объекты (чтобы не путать Panels, Container и Frame объект)
- 1 Объект Scroll
- 1 JTextArea и 1 JTextField
- 1 JButtonGroup с 3 ассоциированными JRadioButton
Его назначение походило на одного человекачат.Напишите в TextField, кнопку отправки и распечатайте его в TextArea, добавляя к любому предыдущему сообщению.Следующим шагом я назвал 3 радиокнопки «Пользователь 1», «Пользователь 2» и «Пользователь 3». При их выборе они напечатают: user_x.GetName + (String);
Моей первой попыткой был ActionListener.(Это прототип):
ActionListener updateUserTalking = new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
JTextField tf = textField; //New message
JTextArea ta = textArea; //Previous message to track an history
String str = ta.getText()+"Radio button changed"; //This should print "User_x"
str = str+tf.setText(str+System.lineSeparator());
}
};
Моя вторая попытка была ItemListener.(Это прототип)
public void itemStateChanged(ItemEvent e) {
updateSystemMessage();
Это updateSystemMessage () вызывает этот метод:
ItemListener updateSystemMessage = new ItemListener(){
public void itemStateChanged(ItemEvent e) {
JTextField tf = textField; //New message
JTextArea ta = textArea; //Previous message to track an history
String str = ta.getText()+"RadioButton changed"; //This should print "User_x"
str = str+tf.setText(str+System.lineSeparator());
}
};
В последнем выводится двойное сообщение.Потому что тот же метод является общим.Таким образом, при изменении выбора есть две коммутации, поэтому этот метод будет вызываться дважды.Вот мой вопрос:
Я знаю, что могу сделать по одному методу для каждого объекта JRadioButton.Я догадывался, есть ли способ сделать жизнеспособным уникальный метод.Там, где выбранный JRadioButton присваивает свое имя в качестве параметра ActionListener или ItemListener.
Я уже пробовал что-то вроде этого:
private void updateSystemMessage() {
JRadioButton jrb = (JRadioButton)this.bGroup.getSelection();
this.system =jrb.getText();
}
Но это не работает, потому что bGroup.getSelection () возвращаетButtonModel, который не может быть приведен как (JRadioButton).Поэтому есть ли такой способ?Или я должен написать один метод для каждого JRadioButton (кто в основном делает то же самое)?