возвращать значения в апплете? - PullRequest
0 голосов
/ 08 декабря 2010

Кто-нибудь знает, как я могу делать это внутри слушателя действия? У меня есть следующее

private void (java.awt.event.ItemEvent evt) {                                                   
    if (studentComboBox.getSelectedItem().equals("Student 1")){


jlabel1=return parameter ="i"



String i = getParameter("student2");

Но я уверен, что возвращаемый параметр неверен

Ответы [ 3 ]

1 голос
/ 08 декабря 2010

Возврат позволяет указать значение для возврата.Это не позволяет вам выполнять задание;это зависит от кода, который вызвал ваш метод, чтобы определить, как действовать.

В любом случае, ваш метод studentComboBoxItemStateChanged является void методом, что означает, что он не может вернуть значение (обычный returnработает, просто выходит из метода).

Это зависит от вас и того, что вам нужно.Лучшее решение в вашем случае, вероятно, состоит в том, чтобы установить некоторую переменную или вызвать некоторую функцию с параметром в каждом из if s.

РЕДАКТИРОВАТЬ Если вы пытаетесь установить значение jlabel1 на "h", "i", "j"

if (studentComboBox.getSelectedItem().equals("Student 1")) { jlabel1.setValue("h"); }
....

Но похоже, что выпытаемся использовать переменные h, i и j.Помните, что "h" отличается от h.

if (studentComboBox.getSelectedItem().equals("Student 1")) { jlabel1.setValue(h); }
....

Но для этого h, i и j должны быть определены как переменные экземпляра вне метода.

The Лучшее решение в этом случае, предполагая, что метка должна содержать значение getParameter ("student1"), это сделать именно так:

if (studentComboBox.getSelectedItem().equals("Student 1")) { jlabel1.setValue(getParameter("student1")); }
....

Как уже упоминал кто-то, карта будет очень хорошоподходит для этого

Map<String, String> prettyNamesToParameterNames= ...;

private void StudentComboBoxItemStateChanged(java.awt.event.ItemEvent evt) {
    String paramName=prettyNamestoParameterNames.get(studentComboBox.getSelectedItem());
    label1.setValue(getParameter(paramName));
}
0 голосов
/ 08 декабря 2010

Итак, когда пользователь выбирает другое значение в studentComboBox, вы хотите, чтобы jlabel1 изменил его текст?Если это так, это должно сделать это:

String h = getParameter("student1");
String i = getParameter("student2");
String j = getParameter("student3");

private void studentComboBoxItemStateChanged(java.awt.event.ItemEvent evt) {                                                   
    if (studentComboBox.getSelectedItem().equals("Student 1")){
        jlabel1.setText(h);
    } else if (studentComboBox.getSelectedItem().equals("Student 2")){
        jlabel1.setText(i);
    } else if (studentComboBox.getSelectedItem().equals("Student 3")){
        jlabel1.setText(j);
    }
}

Обратите внимание, что studentComboBoxItemStateChanged не нужно ничего возвращать.Вы просто вызываете методы для самого объекта jlabel1.

0 голосов
/ 08 декабря 2010

Похоже, вы пытаетесь установить переменную на основе выбранного элемента в JComboBox. Чтобы сделать так, чтобы ваш синтаксис был неверным, вам не нужно использовать ключевое слово return, просто установите нужную переменную.

Если вам нужно вернуть значение, просто верните значение, которое вы хотите вернуть, и измените сигнатуру вашего метода, указав тип возвращаемого значения.

Наконец, вместо использования грязных операторов if / else используется Map. Это будет намного понятнее, намного эффективнее и намного легче изменить позже. Кроме того, ваша учетная запись кода для нуля выбирается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...