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.
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) {
}
}