簡體   English   中英

這兩段代碼有什么區別?

[英]What's the difference between these two bits of code?

我不明白為什么下面的代碼之一會編譯而另一個卻不能。

一個不會編譯的(編譯器說KeyBidings()方法需要返回類型):

public KeyBidings(){
    Action rightAction = new AbstractAction(){
        public void actionPreformed(ActionEvent e){
            x+=10;
            drawPanel.repaint();
        }
    };
    Action leftAction = new AbstractAction(){
        public void actionPreformed(ActionEvent e){
            x-=10;
            drawPanel.repaint();
        }
    };

        InputMap inputMap = drawPanel.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW);
        ActionMap actionMap = drawPanel.getActionMap();

    inputMap.put(KeyStroke.getKeyStroke("RIGHT"), "rightAction");
    actionMap.put("rightAction", rightAction);
    inputMap.put(KeyStroke.getKeyStroke("LEFT"), "leftAction");
    actionMap.put("leftAction", leftAction);

    add(drawPanel);
    pack();
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(640, 480);
    setTitle("Game");
    setLocationRelativeTo(null);
    setVisible(true);
}

並且可以編譯的一個很好:

public KeyBidings(){
    Action rightAction = new AbstractAction(){
        public void actionPerformed(ActionEvent e) {
            x +=10;
            drawPanel.repaint();
        }
    };

        InputMap inputMap = drawPanel.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW);
        ActionMap actionMap = drawPanel.getActionMap();

    inputMap.put(KeyStroke.getKeyStroke("RIGHT"), "rightAction");
    actionMap.put("rightAction", rightAction);

    add(drawPanel);

    pack();
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    setVisible(true);
}

編輯:我不知道構造函數和方法之間的區別,但現在我有另一個問題: https : //gyazo.com/cd3c21a8562589451814903febaf89fe

這是什么問題 我在下面包括了這兩個類的源代碼。

源代碼1: http : //pastebin.com/vwNtJZEG源代碼2: http : //pastebin.com/nL4SbtkM

第二個是名為KeyBidings的類的構造函數,而第一個是其他類的具有丟失的返回類型的方法。

閱讀有關構造函數的教程

請注意,正如您的標題所述,編譯器並未說該方法可能不是公開的。 它說它必須有一個返回類型。 那是完全不同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM