Я получаю эту ошибку, когда пытаюсь добавить ActionListener
в мою переменную popupRequest
, как показано в фрагменте кода.Ошибка «переменная не инициализирована»
error: variable popupRequest might not have been initialized popupRequest.addActionListener(new ActionListener() {
1 error
Так значит сказать, что мой popupRequest
не инициализирован, и это, вероятно, почему выбрасывается ошибка. Но дело в том, что я инициализировал эту переменную.
Код сниппета
JPopupMenu popup = new JPopupMenu();
JMenuItem popupTitle,popupHostJoin,popupRequest;
if (SwingUtilities.isRightMouseButton(evt)) {
JL_CurrentUsers.setSelectedIndex(JL_CurrentUsers.locationToIndex(evt.getPoint()));
popup.add(popupTitle = new JMenuItem("Private Message"));
popup.addSeparator();
if (nickname.equals(JL_CurrentUsers.getSelectedValue()))
popup.add(popupHostJoin = new JMenuItem("Host..."));
else {
popup.add(popupRequest = new JMenuItem("Request..."));//I initialise it here
popup.add(popupHostJoin = new JMenuItem("Join..."));
}
popupHostJoin.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new PvtMessageGUI(fHost,fPort,nickname).setVisible(true);
}
});
//this is the line that gives me that error
popupRequest.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
client.sendMessage(new ChatMessage(ChatMessage.REQUEST,nickname+"->"+JL_CurrentUsers.getSelectedValue()));
}
});
popup.show(JL_CurrentUsers,evt.getX(),evt.getY());
}
Я могу работать вокруг него инициализацией моей popupRequest
, когда я первый объявить переменную.
JMenuItem popupTitle,popupHostJoin,popupRequest=new JMenuItem("Request"...);
То, что я хочу знать .. В чем разница между инициализацией моей popupRequest
, когда я объявил его в начале, и инициализации его в моем if-else
заявления? И я не понимаю, почему программа не обнаружила инициализированный popupRequest
, но он сделал для инициализированной переменной popupHostJoin
, когда я добавил ActionListener
.
Вы присваиваете значение 'popupRequest', если' nickname.equals (JL_CurrentUsers.getSelectedValue()) является ложным ... что вы ожидаете от значения в противном случае? Похоже, вы должны добавить только прослушиватель действий в ветку 'if' ... –
Невнятная ошибка моего ... Спасибо, что указали! –
проверить это для ясного объяснения http://stackoverflow.com/questions/24152351/java-error-variable-might-not-have-been-initialized#24152369 – Anshuman