Java Method Call Expected

匿名 (未验证) 提交于 2019-12-03 01:08:02

问题:

This is a java program with two buttons used to change an integer value and display it. However in IntelliJIDEA the two lines with

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

keep displaying errors 'Method call expected'.

I am not sure what to do to fix this.

Any help will be greatly appreciated

Thanks

Note: the full code is attached below.

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);  } } 

回答1:

incListener and declListener are classes, not methods.

Try

increase.addActionListener(new incListener()); 

btw, rename your classes names to make them start with an uppercase



回答2:

It's simple: use new incListener() instead of incListener(). The later is trying to call a method named incListener, the former creates an object from the class incListener, which is what we want.



回答3:

substitute the lines with

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


回答4:

incListener and decListener are a classes but not a methods, so you must call new to use them, try this:

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

sorry for my bad english



回答5:

Make these changes:

 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); } 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!