[英]“Variable not initialized” error
尝试将ActionListener
添加到我的popupRequest
变量中时出现此错误,如代码片段所示。
错误:变量popupRequest可能尚未初始化popupRequest.addActionListener(new ActionListener(){
1个错误
意思是说我的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
但是当我向其中添加ActionListener
popupHostJoin
检测到初始化的popupHostJoin
变量。
您只能在else
部分中初始化变量。 if
条件为true(即nickname.equals(JL_CurrentUsers.getSelectedValue()
返回true)),则popupRequest
永远不会初始化,这就是编译器引发错误的原因。
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..."));
}
如果nickname.equals(JL_CurrentUsers.getSelectedValue())为false,则不会初始化变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.