12

これは、整数値を変更して表示するための 2 つのボタンを備えた Java プログラムです。ただし、IntelliJIDEA では、

increase.addActionListener(incListener());
decrease.addActionListener(decListener());

「メソッド呼び出しが必要です」というエラーを表示し続けます。

これを修正するために何をすべきかわかりません。

どんな助けでも大歓迎です

ありがとう

注: 完全なコードを以下に添付します。

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Main extends JDialog {
public JPanel contentPane;
public JButton decrease;
public JButton increase;
public JLabel label;

public int number;

public Main() {
    setContentPane(contentPane);
    setModal(true);

    increase = new JButton();
    decrease = new JButton();
    increase.addActionListener(incListener());
    decrease.addActionListener(decListener());

    number = 50;
    label = new JLabel();
}

public class incListener implements ActionListener {
    public void actionPerformed (ActionEvent event) {
        number++;
        label.setText("" + number);
    }
}

public class decListener implements ActionListener {
    public void actionPerformed (ActionEvent event) {
        number--;
        label.setText("" + number);
    }
}

public static void main(String[] args) {
    Main dialog = new Main();
    dialog.pack();
    dialog.setVisible(true);
    System.exit(0);

}
}
4

7 に答える 7

21

incListener と declListener はクラスであり、メソッドではありません。

試す

increase.addActionListener(new incListener());

ところで、クラス名の名前を変更して、大文字で始まるようにします

于 2013-05-07T11:47:55.153 に答える
5

簡単です: のnew incListener()代わりに を使用しincListener()ます。後者はという名前のメソッドを呼び出そうとしていますがincListener、前者はクラス からオブジェクトを作成しますincListener。これが必要です。

于 2013-05-07T11:48:22.200 に答える
0

次の変更を行います。

 public Main() {
    contentPane = new JPanel();
    setContentPane(contentPane);
    setModal(true);

    increase = new JButton("inc");
    decrease = new JButton("dec");
    contentPane.add(increase);
    contentPane.add(decrease);
    increase.addActionListener(new incListener());
    decrease.addActionListener(new decListener());

    number = 50;
    label = new JLabel(number+"");
    contentPane.add(label);
}
于 2013-05-07T11:55:13.333 に答える
0

行を次のように置き換えます

increase.addActionListener( new incListener());
decrease.addActionListener( new decListener());
于 2013-05-07T11:47:58.407 に答える
0

悲しいですが、この同じエラーを Google で検索する必要がありました...クラスを返すメソッドを見つめていました。newオペレーターをやめました。

return <class>(<parameters>)return new <class>(<parameters>)

于 2019-05-20T17:56:43.533 に答える