Dateiname im Label einblenden

Jasker

Mitglied
Hey Leute,
ich bin noch ein relativer Anfänger, was Java bzw. das generelle Programmieren angeht und ich versuche derzeit einen Musikplayer zu programmieren. Ich habe versucht den Dateinamen meines Files in einem Label bei JavaFX einblenden zu lassen nachdem ich ein File mit Hilfe eines FileChooser ausgewählt habe, nur funktioniert dies nicht so richtig. Könnt ihr mir helfen und was mache ich falsch? Ich arbeite mit Eclipse und Scene Builder.

Java:
package application;


import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import java.io.File;
import java.net.URL;
import javafx.util.Duration;
import java.util.ResourceBundle;


import javafx.scene.input.MouseEvent;
import javafx.application.Platform;
import javafx.beans.InvalidationListener;
import javafx.beans.Observable;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;

import javafx.stage.FileChooser;

public class MainController implements Initializable {
    @FXML
    private MediaPlayer mp;
   

    @FXML
    private Slider volumeSlider;
    @FXML
    private String filePath;
    @FXML
    private Slider seekSlider;
    private Label timeLabel;
    private Duration duration;
    private Label songName;
   
   
   
    @FXML
    private void handleButtonAction (ActionEvent event)
    {
        FileChooser fileChooser = new FileChooser();
        FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("Wähle eine Datei (*.mp3)", "*.mp3");
            fileChooser.getExtensionFilters().add(filter);
            File file = fileChooser.showOpenDialog(null);
            filePath = file.toURI().toString();
           
            if(filePath != null)
            {
                Media media = new Media(filePath);
                mp = new MediaPlayer(media);
                mp.play();
               
               
                volumeSlider.setValue(mp.getVolume() * 100);
                volumeSlider.valueProperty().addListener(new InvalidationListener()
                {

                @Override
                public void invalidated(Observable observable)
                {
                mp.setVolume(volumeSlider.getValue() / 200);
                       
                }
                   
                   
                   
                });
               
               
                mp.currentTimeProperty().addListener(new ChangeListener<Duration>() {

                    @Override
                    public void changed(ObservableValue<? extends Duration> observable, Duration oldValue, Duration newValue)
                    {
                    seekSlider.setValue(newValue.toSeconds());
                       
                       
                    }
                   
                });
               
                seekSlider.setOnMouseClicked(new EventHandler<MouseEvent>() {

                    @Override
                    public void handle(MouseEvent event) {
                       
                        mp.seek(Duration.seconds(seekSlider.getValue()));
                       
                    }
                   
                   
                });
               
               
                       mp.songName();
               
            }
    }
   
    public void nameSong()
    {
        songName.setText(filePath.toString());
       
       
    }
          
   
           
   
     @FXML
    public void play(ActionEvent event)
    {
        mp.play();
        mp.setRate(1);
       
    }
     @FXML
    public void pause(ActionEvent event)
    {
        mp.pause();
       
       
    }
     @FXML
    public void stop(ActionEvent event)
    {
        mp.stop();
       
       
    }
     @FXML
    public void slow(ActionEvent event)
    {
        mp.setRate(0.5);
       
       
    }
     @FXML
    public void fast(ActionEvent event)
    {
        mp.setRate(2);
       
       
    }
     @FXML
    public void reload(ActionEvent event)
    {
        mp.seek(mp.getStartTime());
        mp.play();
       
       
    }
     @FXML
    public void next(ActionEvent event)
    {
        mp.seek(mp.getTotalDuration());
        mp.play();
       
       
    }
    
     public void mute(ActionEvent event)
     {
       
        
         if (mp.getVolume() == 0.0)
         {
             mp.setVolume(0.5);
            
         }
        
         else
         {
            
             mp.setVolume(0);
         }
            
        
     }

    @Override
    public void initialize(URL arg0, ResourceBundle arg1) {
       
    }

}
 
Dein Label songName ist nicht initialisiert (u.a.) und verweist somit nicht auf die Instanz, die in der GUI angezeigt wird. (@FXML vergessen)

Eigentlich solltest du eine NullPointerException bekommen. Exceptions und Stacktrace solltest du immer angeben und nicht verheimlichen, da sie enorm helfen.
 
Was meinst du mit anderen Feldern und das sind Exceptions, welche ich bekomme:
Caused by: java.lang.Error: Unaufgelöstes Kompilierungsproblem:
Die Methode nameSong() ist für den Typ MediaPlayer nicht definiert (undefined)

at application.MainController.handleButtonAction(MainController.java:101)
... 58 more
 

Neue Themen


Zurück
Oben