2013-08-21 3 views
0

Я пытаюсь преобразовать короткий JComboBox в группу JRadioButton. При определении переключателей это говорит мне, что мне не нравится мой setMnemonic синтаксис.JRadioButton setMnemonic broken Java 1.5

Мой код:

public JRadioButton mailRadio = new JRadioButton("Mail"); 
mailRadio.setMnemonic(KeyEvent.VK_M); 

Он покажет setMnemonic (INT) в IntelliSense (или любой другой версии Java называется), но как только я признаю, что, mailRadio.setMnemonic указывается для синтаксической ошибки , При наведении указателя на него появляется ошибка «Тип mailRadio.setMnemonic не найден». Компиляция дает ошибку «Недопустимое объявление метода, требуемый тип возврата».

Насколько я знаю, я пытаюсь ничего не делать. Я не использовал Java в течение долгого времени, и я очень ржавый. Я не знаю, что я делаю неправильно.

У меня есть три JRadioButtons, как это, и он будет показывать только ошибку на первом, пока я не прокомментирую это или не удаляю тогда, тогда ошибка переходит к следующей.

Я использую JDeveloper 10.1.3.5, Java 1.5.0_06. К сожалению, сейчас обновление не является вариантом.

+0

Возможно, вы обнаружите, что прохождение базовых учебных пособий по Java очень поможет с вашим кодированием Swing, так как без базового понимания кодирование Swing может быть очень расстраивающим. –

ответ

3

Увидев, что вы использовали public, чтобы объявить переменную, я предполагаю, что фрагмент кода находится внутри объявления класса.

Вы не можете использовать операторы (и вызов метода, такой как setMnemonic - это инструкция) в объявлении класса. Вы должны вызвать этот метод внутри конструктора:

public class XXX { 
    public JRadioButton mailRadio = new JRadioButton("Mail"); 

    public XXX() { 
     mailRadio.setMnemonic(KeyEvent.VK_M); 
    }  
} 

Альтернатива, которая больше похожа на то, что вы изначально пытались сделать это инициализатор блок:

public class XXX { 
    public JRadioButton mailRadio = new JRadioButton("Mail"); 

    { 
     mailRadio.setMnemonic(KeyEvent.VK_M); 
    } 
} 

Но это плохая практика, я только упомянув об этом ради полноты.

Подробнее in the doc.

+0

Спасибо. Это была моя проблема, и спасибо за ссылку на документ. Я отвечу, как только это позволит мне. – Travis