Eine ImageView Deaktivieren

Guten Tag liebe Java-Gemeinde,

aktuell arbeite ich an einem Musikplayer.
Dieser wurde mir als letzte Aufgabe aufgetragen.
Aktuell hakt es bei mir, beim Deaktivieren der Knöpfe Play/Stop/Mute, solange noch keine Datei abgespielt wurde.

hier ein mal der Quellcode vom FXMLController indem der ganze Logikspaß realisiert werden soll.
Vielleicht hat einer von euch eine dufte Idee :)

Java:
package de.fernschulen.mediaplayer;

import java.io.File;

import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.ListView;
import javafx.stage.FileChooser;
import javafx.stage.FileChooser.ExtensionFilter;
import javafx.stage.Stage;

import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
import javafx.scene.image.Image;

public class FXMLController {
    //für die Bühne
    private Stage meineStage;
    //für den Player
    private MediaPlayer mediaplayer;

    //für die MediaView
    @FXML private MediaView mediaview;
    //für die ImageView mit dem Symbol
    @FXML private ImageView symbol;
    //****************************************Aufgabe 2****************************************
    //für die ImageView mit den Symbolen start.
    @FXML private ImageView symbolStart;
    //für die ImageView mit den Symbolen pause.
    @FXML private ImageView symbolPause;
    //****************************************Aufgabe 2****************************************
    //für das Listenfeld
    @FXML private ListView<String> liste;

    //die Methode setzt die Bühne auf den übergebenen Wert
    public void setMeineStage(Stage meineStage) {
        this.meineStage = meineStage;
    }

    //die Methode zum Laden
    @FXML protected void ladenKlick(ActionEvent event) {
        //eine neue Instanz der Klasse FileChooser erzeugen
        FileChooser oeffnenDialog = new FileChooser();
        //den Titel für den Dialog setzen
        oeffnenDialog.setTitle("Datei öffnen");
        //die Filter setzen
        oeffnenDialog.getExtensionFilters().add(new ExtensionFilter("Audiodateien", "*.mp3"));
        oeffnenDialog.getExtensionFilters().add(new ExtensionFilter("Videodateien", "*.mp4"));
        //den Startordner auf den Benutzerordner setzen
        oeffnenDialog.setInitialDirectory(new File(System.getProperty("user.home")));

        //den Öffnendialog anzeigen und das Ergebnis beschaffen
        File datei = oeffnenDialog.showOpenDialog(meineStage);
        //wurde eine Datei ausgewählt
        if (datei != null)
            //dann über eine eigene Methode laden
            dateiLaden(datei);
    }

    //die Methode zum Stoppen
    @FXML protected void stoppKlick(ActionEvent event) {
        //gibt es überhaupt einen Mediaplayer?
        if (mediaplayer != null)
            //dann anhalten
            mediaplayer.stop();
        //****************************************Aufgabe 2****************************************   
        //das Bild für die Wiedergabe erzeugen und anzeigen
        File bilddatei = new File("icons/play.gif");
        Image bild = new Image(bilddatei.toURI().toString());
        symbolStart.setImage(bild);
        //****************************************Aufgabe 2****************************************
    }

    //die Methode für die Pause
    @FXML protected void pauseKlick(ActionEvent event) {
        //gibt es überhaupt einen Mediaplayer?
        if (mediaplayer != null)
            //dann unterbrechen
            mediaplayer.pause();
    }

    //die Methode für die Wiedergabe & Pause
    @FXML protected void playKlick(ActionEvent event) {
        //****************************************Aufgabe 2****************************************
        //gibt es überhaupt einen Mediaplayer?
        if (mediaplayer != null) {
            //wenn der Mediaplayer pausiert oder gestoppt wurde,
            //wird der Mediaplayer auf Wiedergabe gestellt und
            //das Bild des Buttons "play" angezeigt.
            if (mediaplayer.getStatus() == MediaPlayer.Status.PAUSED ||
                mediaplayer.getStatus() == MediaPlayer.Status.STOPPED) {
                //dann Datei abspielen
                mediaplayer.play();
                //das Bild für die Pause erzeugen und anzeigen
                File bilddatei = new File("icons/pause.gif");
                Image bild = new Image(bilddatei.toURI().toString());
                symbolStart.setImage(bild);
            }
            else
                //wenn der Mediaplayer gestartet wurde,
                //wird der Mediaplayer auf pausiert und
                //das Bild des Buttons "pause" angezeigt.
                if (mediaplayer.getStatus() == MediaPlayer.Status.PLAYING) {
                    //wenn nicht, dann die Datei pausieren
                    mediaplayer.pause();
                    //das Bild für die Wiedergabe erzeugen und anzeigen
                    File bilddatei = new File("icons/play.gif");
                    Image bild = new Image(bilddatei.toURI().toString());
                    symbolStart.setImage(bild);
                }
        }
        //****************************************Aufgabe 2****************************************
    }

    //die Methode für das Ein- und Ausschalten der Lautstärke
    @FXML protected void lautsprecherKlick(ActionEvent event) {
        String dateiname;
        //gibt es überhaupt einen Mediaplayer?
        if (mediaplayer != null) {
            //ist die Lautstärke 0?
            if (mediaplayer.getVolume() == 0) {
                //dann auf 100 setzen
                mediaplayer.setVolume(100);
                //und das "normale" Symbol setzen
                dateiname = "icons/mute.gif";
            }
            else {
                //sonst auf 0 setzen
                mediaplayer.setVolume(0);
                //und das durchgestrichene Symbol setzen
                dateiname = "icons/mute_off.gif";
            }
            //das Bild erzeugen und anzeigen
            File bilddatei = new File(dateiname);
            Image bild = new Image(bilddatei.toURI().toString());
            symbol.setImage(bild);   
        }
    }

    //die Methode zum Beenden
    @FXML protected void beendenKlick(ActionEvent event) {
        Platform.exit();
    }

    //****************************************Aufgabe 1****************************************
    //die Methode lädt eine Datei erneut,
    //wenn sie aus der Medialiste ausgewählt wird.
    @FXML protected void listeKlick(MouseEvent event) {
        //der Eventhandler für die Maus
        //eine Maustaste wurde gedrückt
        liste.setOnMousePressed(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent e) {
                //eine Instanz für eine Datei erzeugen
                //und den Namen der Datei als Argument übergeben,
                //die in der Liste angeklickt wurde.
                File angeklickteDatei = new File(liste.getSelectionModel().getSelectedItem());
                //wurde eine Datei ausgewählt?
                if (angeklickteDatei != null)
                    dateiLaden(angeklickteDatei);
            }
        });
    }
    //****************************************Aufgabe 1****************************************   

    //die Methode lädt eine Datei
    public void dateiLaden(File datei) {
        //läuft schon eine Wiedergabe?
        if (mediaplayer != null && mediaplayer.getStatus() == MediaPlayer.Status.PLAYING) {
            //dann anhalten
            mediaplayer.stop();
        }
        //das Medium, den Mediaplayer und die MediaView erzeugen
        try {       
            Media medium = new Media(datei.toURI().toString());
            mediaplayer = new MediaPlayer(medium);
            mediaview.setMediaPlayer(mediaplayer);
            //die Wiedergabe starten
            mediaplayer.play();

            //****************************************Aufgabe 1****************************************
            //ist die Datei bereits vorhanden?
            if (liste.getItems().contains(datei.toString()) == false)
                //wenn ja, dann den Pfad in das Listenfeld eintragen.
                liste.getItems().add(datei.toString());
            //****************************************Aufgabe 1****************************************

            //und die Titelleiste anpassen
            meineStage.setTitle("JavaFX Multimedia-Player " + datei.toString());
        }
        catch(Exception ex) {
            //den Dialog erzeugen und anzeigen
            Alert meinDialog = new Alert(AlertType.INFORMATION, "Beim Laden hat es ein Problem gegeben.\n" + ex.getMessage());
            //den Text setzen
            meinDialog.setHeaderText("Bitte beachten");
            meinDialog.initOwner(meineStage);
            //den Dialog anzeigen
            meinDialog.showAndWait();
        }
    }
}
 

KonradN

Super-Moderator
Mitarbeiter
Ich bin mir nicht sicher, ob ich Dich richtig verstanden habe. Du willst direkt am Anfang gewisse Dinge setzen. Dazu sehe ich zwei Möglichkeiten:

a) im FXML kannst Du einiges setzen. Auch Bilder und so. ABER: Du arbeitest mit File um darauf zuzugreifen. So Bilder sollten als Ressource im Projekt sein und dann auch als Ressource geladen werden. Als Ressource kann man dann auch per fxml darauf zugreifen.

b) Du kannst im Controller Initializable (https://openjfx.io/javadoc/21/javafx.fxml/javafx/fxml/Initializable.html) implementieren und dann in der Methode weitere Dinge setzen. (Streng genommen ist dieses Interface nicht notwendig - es reicht in der Regel, dass eine solche Methode vorhanden ist)
 
Hey KonradN,

Ich danke dir erst einmal für die Antwort :)

Kann ich über diesen Weg, den du vorschlägst "Disablen"?

Ich möchte gerne die Images in der FX-Oberfläche mit der Methode .Disable(), ausschalten.
Kannst du mir dazu etwas sagen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A 2 Verschachtelte Schleifen sollen eine Auswirkung von -7 pro Durchgang haben AWT, Swing, JavaFX & SWT 6
jojoge wie kann ich in eine Benennung eines JButtons eine Variable einbauen? AWT, Swing, JavaFX & SWT 6
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
berserkerdq2 Buttons und Shapes sehen ja nach Screengröße klein oder zu groß aus, jemand eine Idee, was man tun kann? AWT, Swing, JavaFX & SWT 1
ExceptionOfExpectation Mit einer laufenden GUI Applikation eine Datei in dem Rechner löschen AWT, Swing, JavaFX & SWT 2
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
G Gibt es eine Möglichkeit, in Java alle möglichen Zeichen automatisch tippen zu lassen? AWT, Swing, JavaFX & SWT 13
J Ich kriege eine Fehler Messesage bei meinem Media Player AWT, Swing, JavaFX & SWT 8
I Einbindung eines jpg/png/icons in eine GUI AWT, Swing, JavaFX & SWT 1
mrbody234 ArrayList<Message> in eine TableView visualisieren AWT, Swing, JavaFX & SWT 2
U Gibt es eine Möglichkeit statt concatenate einen anderen Befehl zu nutzen? AWT, Swing, JavaFX & SWT 9
D Tastaturabfragen CTRL+t, CTRL+E bei eine JTable, bestehend aus JTextAteas AWT, Swing, JavaFX & SWT 4
G JavaFX Wert aus DB lesen, wenn erfolgreich automatisch eine fxml laden, möglich? AWT, Swing, JavaFX & SWT 2
Lukas2904 Wie speicher ich eine Einstellung? AWT, Swing, JavaFX & SWT 1
T Getter und Setter für eine Stage AWT, Swing, JavaFX & SWT 6
P Zwei JTables auf eine A4-Seite mit einstellbaren Rändern AWT, Swing, JavaFX & SWT 9
Monokuma 2D-Grafik Imageimport durch eine gezeichnete Form ersetzen AWT, Swing, JavaFX & SWT 16
M Eine Datei auf den Apache Server hochladen - über das Menü im JavaProgramm AWT, Swing, JavaFX & SWT 7
B JavaFX Warum wird hier eine NullPointer-Exception geworfen? AWT, Swing, JavaFX & SWT 7
VPChief Gibt es eine möglichkeit Dateien aus der jar datei zu kopieren? AWT, Swing, JavaFX & SWT 46
B Swing Sudoku: Laden / Speichern von Zahlen aus/in mehrere JTextFields aus/in eine(r) Textdatei AWT, Swing, JavaFX & SWT 9
P Swing Icon einfügen wirft eine Fehlermeldung AWT, Swing, JavaFX & SWT 3
F Variablen an eine Form binden? AWT, Swing, JavaFX & SWT 2
V Swing für jedes Kästchen eine eigene Farbe AWT, Swing, JavaFX & SWT 2
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
W JavaFX Warum kriege ich eine Exception? AWT, Swing, JavaFX & SWT 23
karlmasutra JavaFX Zugriff auf eine erzeugte Scene aus einer anderen Klasse AWT, Swing, JavaFX & SWT 1
Informatiknoob AWT Zahlenraten (eine Zahl zwischen 1 und 10) AWT, Swing, JavaFX & SWT 1
A eine Fehler AWT, Swing, JavaFX & SWT 9
TheJavaKid Auf eine Zeichnung im Canvas reagieren AWT, Swing, JavaFX & SWT 13
A JavaFX Daten in eine HTML-Table mit JS schreiben AWT, Swing, JavaFX & SWT 3
B JavaFX TableView eine Zeile markieren AWT, Swing, JavaFX & SWT 5
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
J Swing JavaProgramm für Verschlüssen für eine Datei AWT, Swing, JavaFX & SWT 19
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
J JavaFX Die Webview stellt eine Webseite nicht dar AWT, Swing, JavaFX & SWT 0
M JavaFX Ein Labeltext eine zeitlang anzeigen dann weiter machen AWT, Swing, JavaFX & SWT 3
F Event wenn Maus eine JList verlässt AWT, Swing, JavaFX & SWT 13
I JAVAFX - Übergabe der Inhalte an eine Scene - Wo ist der Vorteil gegenüber Swing? AWT, Swing, JavaFX & SWT 2
Joker4632 JFrame in eine Runnable auslagern? AWT, Swing, JavaFX & SWT 4
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
B Wie erstelle ich eine JavaFX Anwendung von diesem Code? AWT, Swing, JavaFX & SWT 3
Sanni94 JavaFX Kann man eine Grafik in einen Text einbinden? AWT, Swing, JavaFX & SWT 2
Java_RY AWT Frame in eine eigene klasse auslagern und aufrufen AWT, Swing, JavaFX & SWT 6
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
G Eine paint-Methode, 2 Welten? AWT, Swing, JavaFX & SWT 3
Thallius Swing JDatePicker oder Sucht jemand eine Aufgabe? AWT, Swing, JavaFX & SWT 0
K Wie kann ich eine Variable zwischen Tab Klassen weitergeben ? AWT, Swing, JavaFX & SWT 7
D JavaFX Erkennen wenn eine Anwendung geschlossen wird und etwas tun? AWT, Swing, JavaFX & SWT 4
R Swing Durch JComboBox-Item eine TextArea aktualisieren AWT, Swing, JavaFX & SWT 2
M Wie binde ich eine JavaFX ProgressBar an eine Datei Übertragung? AWT, Swing, JavaFX & SWT 2
D Objekte einer Oberfläche in eine Datei/Ordner speichern AWT, Swing, JavaFX & SWT 9
A Mit dem Scene Builder eine Collage erstellen (Bilder beziehen aus Flickr) AWT, Swing, JavaFX & SWT 1
A JFace Wizard: Ist es möglich eine Page zu löschen? AWT, Swing, JavaFX & SWT 2
L Swing Wie programmiere ich eine eigene GUI? AWT, Swing, JavaFX & SWT 12
M Combo Box auswahl in eine Datenbank speichern AWT, Swing, JavaFX & SWT 1
M Swing JTextField getText Mehtode übergeben in eine Klasse zu einer Rechnung AWT, Swing, JavaFX & SWT 1
D AWT Das ganze GUI in eine Klasse? AWT, Swing, JavaFX & SWT 1
J JavaFX eine Art Tabelle, jedoch mit mehreren Zeilen AWT, Swing, JavaFX & SWT 2
L Zwei String Array in eine Spalte einfügen AWT, Swing, JavaFX & SWT 1
U LookAndFeel für eine Komponente AWT, Swing, JavaFX & SWT 2
E Mit Netbeans von einer Form auf eine Komponente einer anderen Form zugreifen AWT, Swing, JavaFX & SWT 2
G Zeichnen auf eine schwergewichtige Komponente? AWT, Swing, JavaFX & SWT 0
S Swing Update eine JTabelle nach einer Drag&Drop Operation AWT, Swing, JavaFX & SWT 0
M Über eine JMenuBar überprüfen ob ein JCheckBoxMenuItem selectiert ist. AWT, Swing, JavaFX & SWT 4
M Wie kann ich eine an Apple Automator angelehnte GUI erstellen? AWT, Swing, JavaFX & SWT 1
A JavaFX Eine Task mit einer ProgressBar verbinden AWT, Swing, JavaFX & SWT 0
S JavaFX Canvas - nur eine Figur auf der Zeichenfläche färben? AWT, Swing, JavaFX & SWT 1
S Swing Mit einem Link eine Methode aufrufen AWT, Swing, JavaFX & SWT 2
C Swing Durch Inhaltsänderung eines JTextfields eine Funktion aufrufen AWT, Swing, JavaFX & SWT 5
G 2D-Slider bzw. eine graphische Auswahlkomponente die sich so verhält AWT, Swing, JavaFX & SWT 6
H Lust auf eine Open-Source Lösung für universelle Java Client-Technologie? AWT, Swing, JavaFX & SWT 11
T Aus JAVA.Jar GUI eine Flash-Datei machen AWT, Swing, JavaFX & SWT 3
S 5 Playlisten eine Skip() AWT, Swing, JavaFX & SWT 4
M SWT Browser nur eine Seite erlauben AWT, Swing, JavaFX & SWT 3
G Daten in eine JTable schreiben AWT, Swing, JavaFX & SWT 3
K GUI Elemente über eine separate Textdatei beschriften? AWT, Swing, JavaFX & SWT 4
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
I Anhand ButtonGroup eine Auswahl treffen AWT, Swing, JavaFX & SWT 2
B Nach dem Öffnen des Dialogs eine Aktion ausführen. AWT, Swing, JavaFX & SWT 6
W Funktion aus einer Java Datei in eine andere einbauen AWT, Swing, JavaFX & SWT 25
A Swing Text auf eine Seite an beliebigen Orten schreiben AWT, Swing, JavaFX & SWT 6
G Swing Value von einer JScrollBar auf eine andere übertragen AWT, Swing, JavaFX & SWT 2
Rudolf Swing Wie testet man am besten eine GUI? AWT, Swing, JavaFX & SWT 3
P Swing Alle Zeilen einer Spalte (jTable) zusammen zählen und in eine eigene Zeile das Ergebnis schreiben. AWT, Swing, JavaFX & SWT 7
F GroupableTableHeader zeigt nur eine Zeile AWT, Swing, JavaFX & SWT 4
N Swing Optimale Höhe eine JTextPanes bei festgelegter Breite bestimmen AWT, Swing, JavaFX & SWT 23
R Swing Mit Swing eine throws Exception Methode öffnen AWT, Swing, JavaFX & SWT 3
M Eine Kugel nach rechts bewegen AWT, Swing, JavaFX & SWT 5
C Swing NullPointerException beim Hinzufügen von Checkboxes in eine ArrayList AWT, Swing, JavaFX & SWT 5
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
lumo SWT Zeichnen bescheunigen bzw eine allg. Frage AWT, Swing, JavaFX & SWT 8
M Auf einem Bild eine Markierung aufziehen AWT, Swing, JavaFX & SWT 3
R Eine Instanz von JPanel mehrfach hinzufügen AWT, Swing, JavaFX & SWT 2
B eine .jar erzeugen AWT, Swing, JavaFX & SWT 4
M In JField eine Kommazahl darstellen java.lang.NumberFormatException AWT, Swing, JavaFX & SWT 4
N Button on click eine andere Klasse aufrufen... AWT, Swing, JavaFX & SWT 2
M Eine nicht korrekte Darstellung bei repaint() warum? AWT, Swing, JavaFX & SWT 4
M Ein Tab eine JTabbedPane durch Button Druck öffen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben