2014-11-09 3 views
1

Я стараюсь играть гудок, я использую Toolkit.getDefaultToolkit(). Гудок(), и он работает с Java 7.играет звук с Явой 8 SDk

import java.awt.Toolkit; 

public class testbeep { 

    public static void main(String[] args) { 

     Toolkit.getDefaultToolkit().beep(); 
     } 

} 

Howevere, мне нужно использовать JavaFX, и JavaFX работает на Java 8. Может кто-нибудь помочь мне настроить мой проект? Я работаю над eclipse, когда я использую Java 8, звуковой сигнал работает, но не JavaFX, и когда я использую Java 7, звуковой сигнал не работает, а JavaFX - нет. Я замечаю, что icetea-sound.jar существует на Java 7 и не существует на Java 8, могу ли я найти его где-нибудь?

ответ

0

Смешивание AWT и JavaFX может быть немного сложным; Однако это, кажется, работает хорошо для меня (Java 1.8.0_20, Mac OS X 10.9.5):

import java.awt.Toolkit; 

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 


public class TestBeep extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     Toolkit awtToolkit = Toolkit.getDefaultToolkit(); 
     Button button = new Button("Beep"); 
     button.setOnAction(e -> awtToolkit.beep()); 
     StackPane root = new StackPane(button); 
     primaryStage.setScene(new Scene(root, 250, 75)); 
     primaryStage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 

} 

Я понятия не имею, если это нормально, чтобы позвонить toolkit.beep() из потока, отличного от обработки AWT потока событий (здесь, я это делаю).

+0

Этот код не работает на моем ПК ... – Midora

+0

Я нахожусь на Ubuntu 14.04.1 LTS – Midora

0

Как вы пишете приложение JavaFX, вероятно, вы должны использовать встроенный API JavaFX , а не API на основе AWT.

AudioClip plonkSound = new AudioClip("http://somehost/path/plonk.mp3"); 
plonkSound.play(); 

Для описания поддерживаемых аудиоформатов см. .

Убедитесь, что ваша система соответствует minimum requirements for JavaFX media playback.

Для использования ubuntu для использования JavaFX вам необходимо либо использовать Oracle JDK, либо Debian OpenJFX package, как опубликовано Emmanuel в JavaFX and OpenJDK. Пакет Debian OpenJFX является совершенно новым, поэтому на данном этапе я бы рекомендовал придерживаться среды выполнения Oracle Java, если можно.


Что касается вашего комментария о IcedTea-звук присутствует в Java 7, но не Java 8, возможно, это потому, что ваш Java 7 в OpenJDK и ваш Java 8 является Oracle JDK и, возможно, Oracle JDK не поставляется с icedtea- звук (я не проверял и не знаю). Вы можете попробовать openjdk 8 + пакет debian openjfx, если хотите, возможно, это будет включать библиотеку icedtea-sound. icedtea-sound определенно не требуется для чистого воспроизведения медиафайлов JavaFX, но может потребоваться использовать команду awt beep. Несмотря на это, я бы, вероятно, по-прежнему рекомендовал решение JavaFX только с использованием медиафайлов JavaFX, а не для микширования в AWT-библиотеках.

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