2015-04-16 4 views
0

Я прочитал большинство других вопросов по не-абстрактным классам с абстрактными методами, и я не думаю, что я понял это. Так вот моя проблема:Класс не абстрактный, не переопределяет абстрактный метод

Я пытаюсь сделать метроном, чтобы метроном щелкнул и воспроизвел звук. Я скопировал код с http://www.cs.cmu.edu/~illah/CLASSDOCS/javasound.pdf.

Код ниже - это супер базовая программа, которая создает JFrame, JPanel и JButtton. Когда нажата кнопка (ClickForSound), она должна воспроизводить звук.

import java.net.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.util.*; 
import java.applet.*; 

class PlsWork implements ActionListener{ 
JPanel JPanelThing = new JPanel(); 

public PlsWork() { 
    //make frame to hold everything 
    JFrame Frame4HoldinSheit = new JFrame("Sound Player"); 

    //set up frame 
    Frame4HoldinSheit.setLayout(new FlowLayout()); 
    Frame4HoldinSheit.setSize(300, 300); 
    Frame4HoldinSheit.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    // make button for playing sound 
    JButton ClickForSound = new JButton("Click Me"); 
    ClickForSound.addActionListener(this); 

    //add button to panel, then panel to frame 
    Frame4HoldinSheit.add(JPanelThing); 
    JPanelThing.add(ClickForSound); 
} 

public void actionPreformed(ActionEvent ae) { 
    //if button is pressed 
    if(ae.getActionCommand().equals("Click Me")){ 
    try { 
     //make a AudioClip 
     AudioClip MetSound = Applet.newAudioClip(
      //Using this file (FOUND HERE) 
      new URL("C:/Users/jheld7499/desktop/4d.wav")); 
      MetSound.play(); 
    } catch (java.net.MalformedURLException murle) { 
     //ya done goofed on where u thought the file was 
     System.out.println("Malformed URL Exception"); } 
    } 
} 

public static void main(String args[]){ 
    SwingUtilities.invokeLater(new Runnable() { public void run() { 
     //run the program 
     new PlsWork();} }); 
} 
} 

Я получаю ошибку в том, что класс PlsWork не является абстрактным и, следовательно, не отменяет абстрактный метод PlsWork

sound.java:8: error: PlsWork is not abstract and does not override 
abstract method actionPerformed(ActionEvent) in ActionListener 
class PlsWork implements ActionListener{ 
^ 
1 error 

Также ОБРАТИ поговорить со мной, как идиот, как я почти не имею ни малейшего представления о том, что абстрактное означает или как сделать реферат метода, если я хочу, чтобы что-то было абстрактным или чем-то еще.

+0

https://docs.oracle.com/javase/tutorial/ java/IandI/abstract.html – DavidS

+2

«Ошибка, которую я получаю, заключается в том, что класс PlsWork не является абстрактным и, следовательно, не отменяет абстрактного метода PlsWork» - это _not_, что говорит сообщение об ошибке. Прочтите еще раз. – davmac

ответ

3

Проверьте ваш синтаксис: actionPerformed != actionPreformed. Добавление @Override аннотацию может быть полезным в других, не во время компиляции ошибок ситуациях (например, вы переопределение, не абстрактный метод подкласса)

@Override 
public void actionPerformed(ActionEvent e){ 

} 
+0

Одним из таких случаев является сообщение об ошибке компилятора! – TEK

+0

большое спасибо, это была ошибка –

+0

@TEK, если вы действительно посмотрите, Java является одним из языков, которые представляют наиболее полезные ошибки компилятора. –

Смежные вопросы