繁体   English   中英

“变量未初始化”错误

[英]“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM