2017-12-05 26 views
0

ボタンをクリックしてもサウンドを追加しようとしていて、動作していないようです。私はさまざまなアプローチを試みてきましたが、これはこの1つのエラーメッセージを除いて最も近いことです。私はどんな提案にも開放的です。Javafxでaudioclipを追加するにはどうすればよいですか?

package beatbox; 

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.GridPane; 
import javafx.scene.media.AudioClip; 
import javafx.stage.Stage; 
import sun.audio.AudioPlayer; 


public class BeatBox extends Application { 
// Adding audio clip 
private static final AudioClip clip1 = new AudioClip(AudioPlayer.class.getResource("http://www.wavlist.com/soundfx/029/piano2.wav").toString()); 

@Override 
public void start(Stage primaryStage) { 

    // Create gridpane for button display 
    GridPane gridPane = new GridPane(); 
    Button btn1 = new Button(""); 
    gridPane.add(btn1, 0, 0, 1, 1); 

    // Playing sound and changing color on button click 
    btn1.setOnAction(new EventHandler<ActionEvent>() { 

     @Override 
     public void handle(ActionEvent event) { 
      clip1.play(); 
      btn1.setStyle(" -fx-base: #99ccff;"); 
     } 
    }); 

    Scene scene = new Scene(gridPane, 302, 335); 
    primaryStage.setScene(scene); 
    primaryStage.setResizable(false); 
    primaryStage.show(); 
    } 
    public static void main(String[] args) { 
    launch(args); 
} 

(UPDATE) は、ここではまず、構文エラーを取り除くために、 "}" の中括弧でmainメソッドを閉じてください、例外

Exception in thread "JavaFX Application Thread" Exception in thread "main" java.lang.ExceptionInInitializerError 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:348) 
at com.sun.javafx.application.LauncherImpl.lambda$launchApplicationWithArgs$156(LauncherImpl.java:352) 
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326) 
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) 
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) 
at java.lang.Thread.run(Thread.java:748) 
Caused by: java.lang.NullPointerException 
at beatbox.BeatBox.<clinit>(BeatBox.java:24) 
+0

'AudioPlayer.clip1.play();ではなく、' clip1.play(); 'が必要です。どのようにコード行が動作するのか分かりません。また、AudioPlayerが内部APIであることを伝えるエラーメッセージも表示されますが、その意味はわかりません。「エラーではなく、警告であり、コンソールにはっきりと表示されています。将来削除されます。 – csmckelvey

+0

申し訳ありません..私はまだ初心者です。とにかく、私はまだあなたの提案を使用した後に例外があります。 –

+1

"_Iまだ例外があります_"新しい例外が何であるか教えてくれず、更新されたコードを教えてくれないと助けにならない... – csmckelvey

答えて

2

OKです。

import sun.audio.AudioPlayer; 

をして、これをインポートします:第二に、インポートを削除

import javafx.scene.media.AudioClip; 

第三に、AudioPlayer.class.getResource()のtoStringを削除し、単にURLを使用します。

private static final AudioClip clip1 = new AudioClip("http://www.wavlist.com/soundfx/029/piano2.wav"); 

これだけです。オーディオが再生されます!

+0

ありがとうございます! @ShaneMoe –

+0

ようこそ@StevenMatos –

関連する問題