PelleP Skrevet 24. mai 2009 Del Skrevet 24. mai 2009 (endret) Følgende kode fungerte fint før helgen og jeg trodde at jeg nå ikveld kunne komme et skridt videre, men nå får jeg plutselig feilmelding når jeg komplierer: "EngelsktestGUI.java:5: EngelsktestGUI is not abstract and does not override abstract method actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener class EngelsktestGUI extends JFrame implements ActionListener{" Det er første gange jeg prøver å lage et grafisk brukergrensesnitt med Swing og ettersom jeg ikke husker hva jeg endret sist så vet jeg ikke hvordan jeg skal komme videre. Svært takknemlig dersom noen kan hjelpe. import javax.swing.*; import java.awt.*; import java.awt.event.*; class EngelsktestGUI extends JFrame implements ActionListener{ public static void main(String[]args){ SwingUtilities.invokeLater (new Runnable(){ public void run(){ new EngelsktestGUI(); } }); } EngelsktestGUI(){ setTitle("Engelsktest"); setSize(800, 600); JButton stavetest = new JButton("Stavetest"); stavetest.addActionListener(new Spraktest()); JButton leggtilord = new JButton("Legg til ord"); JButton avslutt = new JButton("Avslutt"); avslutt.addActionListener(new Avslutter()); JPanel panel = new JPanel(); panel.add(stavetest); panel.add(leggtilord); panel.add(avslutt); add(panel); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setVisible(true); } } class Avslutter implements ActionListener{ public void actionPerformed(ActionEvent e){ System.out.println("07"); } } class Spraktest implements ActionListener{ public void actionPerformed(ActionEvent e){ String antallord = JOptionPane.showInputDialog("Hvor mange ord skal testen omfatte?"); int antallTestord = Integer.parseInt(antallord); } } Endret 24. mai 2009 av PelleP Lenke til kommentar
NevroMance Skrevet 24. mai 2009 Del Skrevet 24. mai 2009 Actionlistener er ett interface, og i ett interface må alle metodene interfacet har implementeres i klassen som arver fra interfacet. Du har ikke implementert metoden actionPerformed(ActionEvent e), som beskrevet i API'et http://java.sun.com/javase/6/docs/api/ Lenke til kommentar
PelleP Skrevet 24. mai 2009 Forfatter Del Skrevet 24. mai 2009 Actionlistener er ett interface, og i ett interface må alle metodene interfacet har implementeres i klassen som arver fra interfacet. Du har ikke implementert metoden actionPerformed(ActionEvent e), som beskrevet i API'et http://java.sun.com/javase/6/docs/api/ Jeg begriper egentlig ikke et smakk av det du sier, men jeg prøvde så godt jeg kunne. Når jeg endret linjen: class EngelsktestGUI extends JFrame implements ActionListener{ slik: class EngelsktestGUI extends JFrame { så fungerte det. Jeg hadde klassen spraktest som en indre klasse under klassen EngelsktestGUI, og det var vel jeg la til "implements ActionListener". Takk for raskt svar, jeg tror jeg kunne bli sittende svært lenge med dette ellers. Lenke til kommentar
Unlimited LTD Skrevet 25. mai 2009 Del Skrevet 25. mai 2009 Det som menes er at dersom du skriver implements ActionListner så sier du at klassen din kommer til å ha en metode: public void actionPerformed(ActionEvent e){} Men du burde bruke anonyme klasser istedet for å lage egne klasser for eventhandlere. Lenke til kommentar
PelleP Skrevet 25. mai 2009 Forfatter Del Skrevet 25. mai 2009 Det som menes er at dersom du skriver implements ActionListner så sier du at klassen din kommer til å ha en metode: public void actionPerformed(ActionEvent e){}Men du burde bruke anonyme klasser istedet for å lage egne klasser for eventhandlere. Takk! Det står visst noe om det i boken, skal lese... Lenke til kommentar
___ Skrevet 25. mai 2009 Del Skrevet 25. mai 2009 Jeg foreslår at du benytter denne feilsituasjonen som en anledning til å lære deg hva interfaces er for noe. Det er ikke noe man kan hoppe over, for å si det sånn. Anonyme klasser kan være en enklere løsning i dette tilfellet ja, men ikke bruk det som argument for å hoppe over interfaces. Les deg gjerne opp på abstrakte klasser også. Werner Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå