JavaFx mp3不会播放

时间:2014-11-10 13:17:44

标签: javafx directory mp3

我在textfield2上写了一个mp3目录,然后我在textfield \ NameOfMP3.mp3上添加,然后点击按钮。我有相同的图像系统。现在,当我点击播放时,图像出现,但mp3不会播放。我怎样才能解决这个问题,mp3会播放?

package javafxapplication1;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.net.URL;
import javafx.scene.control.Label;
import javafx.scene.text.TextAlignment;
import javafx.scene.control.*;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.text.Font;
import javafx.stage.StageStyle;


import javafx.application.Application;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.DirectoryChooser;
import javafx.stage.Stage;
/**
 *
 * @author rodey_000
 */
public class JavaFXApplication1 extends Application {

 public static void main(String[] args) {
    launch(args);
}
@Override
public void start(Stage stage) {
    Group root = new Group();
    Scene scene = new Scene(root);
    stage.setTitle("Label Sample");
    stage.setWidth(400);
    stage.setHeight(180);

    HBox hbox = new HBox();
    Button button1 = new Button("Bild");
    button1.setStyle("-fx-font: 22 arial; -fx-base: #b6e7c9;");
    button1.setTranslateX(-430);
    button1.setTranslateY(30);
    String T ="TroubleSeeker.mp3";


    Label label1 = new Label("Bild");
    label1.setFont(Font.font("Cambria", 30));
    label1.setTranslateY(0); 

    Label label5 = new Label("User");
    label5.setFont(Font.font("Cambria", 30));
    label5.setTranslateY(100);
    label5.setTranslateX(-300);

    final TextField name = new TextField();
    name.setPromptText("Enter BildName.png.");
    name.setPrefColumnCount(10);
    name.setText("testbild.png");
    name.getText();
    name.setTranslateX(-40);


    final TextField name2 = new TextField();
    name2.setPromptText("Enter Songname.mp3.");
    name2.setPrefColumnCount(10);

    name2.getText();
    name2.setTranslateX(-270);
    name2.setTranslateY(55);


    final TextField name3 = new TextField();
    name3.setPromptText("Enter User");
    name3.setPrefColumnCount(10);
    name3.setText("Michael");
    name3.getText();

    name3.setTranslateX(-440);
    name3.setTranslateY(100);


    DirectoryChooser directoryChooser = new DirectoryChooser();
            File selectedDirectory = directoryChooser.showDialog(stage);
  String a= selectedDirectory.getAbsolutePath();
    name.setText(a);
    name2.setText(a);

     button1.setOnAction(new EventHandler<ActionEvent>() {

        public void handle(ActionEvent t) {
         Stage secondaryStage = new Stage(StageStyle.UTILITY);
         Group root2 = new Group();
         Scene scene2 = new Scene(root2);
         String TextBild = name.getText();
         String TextAufBild = name3.getText();
         String Song = name2.getText();


         int lenght = name3.getLength();


               Image image = new Image("file:/"+TextBild);

         double high = image.getHeight();
         double widht = image.getWidth();

            secondaryStage.setTitle("Label Sample");
            secondaryStage.setWidth(600);
            secondaryStage.setHeight(300);


        Label label3 = new Label();
         label3.setGraphic(new ImageView(image));

         Label label4= new Label(TextAufBild);
         label4.setFont(new Font("", 50));
         label4.setTextAlignment(TextAlignment.JUSTIFY);
         label4.setTranslateY(50);

         if(lenght == 1){
         label4.setTranslateX(-340);
         }
         else if(lenght == 2){
         label4.setTranslateX(-350);
         }
         else if(lenght == 3){
         label4.setTranslateX(-360);
         }
         else if(lenght == 4){
         label4.setTranslateX(-370);
         }
         else if(lenght == 5){
         label4.setTranslateX(-380);
         }
         else if(lenght == 6){
         label4.setTranslateX(-390);
         }
         else if(lenght == 7){
         label4.setTranslateX(-400);
         }
         else if(lenght == 8){
         label4.setTranslateX(-410);
         }
         else if(lenght == 9){
         label4.setTranslateX(-420);
         }
         else if(lenght == 10){
         label4.setTranslateX(-430);
         }
         else if(lenght == 11){
         label4.setTranslateX(-440);
         }
          else if(lenght == 12){
         label4.setTranslateX(-450);
         }
          else if(lenght == 13){
         label4.setTranslateX(-460);
         }
          else if(lenght == 14){
         label4.setTranslateX(-470);
         }
          else if(lenght == 15){
         label4.setTranslateX(-480);
         }

         HBox hbox2 = new HBox();  
         hbox2.setSpacing(10);

         hbox2.getChildren().add((label3));
         hbox2.getChildren().add((label4));

         ((Group)scene2.getRoot()).getChildren().add(hbox2);

         secondaryStage.setTitle("Secondary Stage"); 
         secondaryStage.setScene(scene2);
         secondaryStage.show();



         Media audioFile = new Media("file:/"+Song);
         MediaPlayer m = new MediaPlayer(audioFile);   
        m.play();
        }
    });


    Label label2 = new Label("Song");
    label2.setFont(Font.font("Cambria", 30));
    label2.setTranslateY(50);
    label2.setTranslateX(-58);
    label2.setTranslateZ(1);


    hbox.setSpacing(10);
    hbox.getChildren().add(label1);
    hbox.getChildren().add(label2);
    hbox.getChildren().add(name);
    hbox.getChildren().add((label5));
    hbox.getChildren().add(name2);
    hbox.getChildren().add(name3);

    hbox.getChildren().add(button1);
    ((Group)scene.getRoot()).getChildren().add(hbox);

    stage.setScene(scene);
    stage.show();
}
 public void play(String Song){

    }    
}

1 个答案:

答案 0 :(得分:0)

Media类需要uri路径 问题是路径文件名中的char'\'应转换为'/', 另一个问题是如果在路径文件名中有一个''(空格)字符,

所以你使用这段代码:

Song=Song.replace('\\', '/');
Song=Song.replace(" ", "%20");
Media audioFile = new Media("file:/"+Song);