Java-methodeaanroep verwacht

Dit is een Java-programma met twee knoppen die worden gebruikt om een ​​geheel getal te wijzigen en weer te geven.
Maar in IntelliJIDEA zijn de twee regels met

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

blijf foutmeldingen ‘Methode oproep verwacht’ weergeven.

Ik weet niet zeker wat ik moet doen om dit op te lossen.

Alle hulp wordt zeer op prijs gesteld

Bedankt

Opmerking: de volledige code is hieronder bijgevoegd.

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

Antwoord 1, autoriteit 100%

incListener en declListener zijn klassen, geen methoden.

Probeer

increase.addActionListener(new incListener());

btw, hernoem de namen van je klassen zodat ze met een hoofdletter beginnen


Antwoord 2, autoriteit 24%

Het is simpel: gebruik new incListener() in plaats van incListener(). De laatste probeert een methode aan te roepen genaamd incListener, de eerste maakt een object van de klasse incListener, die is wat we willen.


Antwoord 3, autoriteit 5%

incListener en decListener zijn klassen maar geen methodes, dus je moet new aanroepen om ze te gebruiken, probeer dit:

increase.addActionListener(nieuwe incListener());
afname.addActionListener(new decListener());

sorry voor mijn slechte Engels


Antwoord 4

vervang de regels door

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

Antwoord 5

Breng deze wijzigingen aan:

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

Antwoord 6

Het is triest, maar ik moest dezelfde fout googlen… Ik staarde naar een methode die een klasse retourneerde. Ik liet de operator new achterwege.

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


Antwoord 7

Telkens wanneer een tekenreeksobject wordt gemaakt met de operator new, wordt er een nieuw object gemaakt waarnaar uw programma op zoek is.
De volgende link is handig om meer te weten te komen over het verschil tussen een string en een nieuwe string.
Wat is het verschil tussen “text” en new String(“text “)?

LEAVE A REPLY

Please enter your comment!
Please enter your name here

fifteen + eighteen =

Other episodes