Converter GUI

Hallo Ladys und Gentleman,

ich habe eine kleine GUI erstellt, die mp3, wav flac Dateien konvertieren soll.
Mein Problem ist nun wenn ich die ausgewählten Dateien konvertieren möchte werden keine
neuen Dateien erstellt.

Dazu kommt noch das ich vermutlich irgendwo gepfuscht habe und die obere Leiste “Werkzeuge”
nicht mehr weg bekomme. Denn wenn ich die Leiste entferne startet meine GUI nicht mehr.

Kann mir jemand einen Tipp geben oder meinen Code etwas aufbessern?

 * 
 * 
 */
package sox; //Package Name

import java.awt.BorderLayout;               //Durch eine import-Anweisung wird
import java.awt.Color;                      //eine Klasse nicht geladen, sondern 
import java.awt.GridLayout;                 //lediglich so sichtbar gemacht
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;

/**
 *
 * @author leichnde
 */
public class LAF extends JFrame { //Classen Name

    //ATTRIBUTE-----------------------------------------------------------------
    private JPanel panelFrame;
    private JPanel panelButtons;
    private JPanel panelFlacFiles;
    private JPanel panelNewFiles;
    private JPanel panelFortschritt;
    private JButton convert;
    private JButton play;
    private JButton removeSong;
    private JButton clearList;
    private JButton addSong;
    private JMenuBar meinMenu;
    private JMenu datei;
    private JMenu auswahl;
    private JMenuItem exit;
    private JMenuItem oeffnen;
    private JMenuItem toMp3;
    private JMenuItem toWav;
    private JLabel newDataLabel;
    private JLabel orgDataLabel;
    private JProgressBar bar;
    private JFileChooser waehlen;
    private JList<String> orgDataList;
    private JList<String> newDataList;
    private File[] liste;
    private String[] oldFileFormat;
    private String[] newSong;
    private String[] cmd;
    @SuppressWarnings("MismatchedReadAndWriteOfArray") //unterdrückt Fehlermeldungen
    private String[] Data = {""};
    private String[] flacData;
    String[] orgFormat;
    private String[] newSongFormat;
    private String format;
    private int y = 0;
    boolean eintragGewaehlt;    //dient zum Speichern der logischen Werte true und false
    Image programmIcon;
    DefaultListModel orgListModel;
    DefaultListModel newListModel;
    int[] ausgewaehlteElemente;
    int[] orgElemente;
    int[] eintragSpeichern;
    boolean eintragVergleichen;         //dient zum Speichern der logischen Werte true und false
    String[] orgSongs;
    String SongPfad;
    Object[] orgSongsOld;               //instanz
    @SuppressWarnings("MismatchedReadAndWriteOfArray")
   
    

    //Constructor---------------------------------------------------------------
    public LAF() {
        super("AUDIO CONVERTER");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //schließt GUI beim beenden
        this.setSize(800, 300);             //größe des GUI Frames
        this.setLocation(250, 70);          //Position des GUI Frames auf Bildschirm

        bar = new JProgressBar(0, 100);     //Fortschrittsbalken 0-100
        bar.setValue(0);                    //Optionen
        bar.setStringPainted(true);         //Optionen
        bar.setSize(500, 20);               //Größe des Fortschrittsbalkens

        meinMenu = new JMenuBar();          //Menüleiste wird erzeugt
        this.setJMenuBar(meinMenu);

        datei = new JMenu("Datei");             //Menüleiste Datei Button
        oeffnen = new JMenuItem("Öffnen");      //Menüleist Öffnen Button
         auswahl = new JMenu("Werkzeuge");       //Menüleiste Werkzeuge Button
        
        oeffnen.addActionListener(new ActionListener() {
            @Override //erlaubt das einbinden von Metadaten in den Quelltext
            public void actionPerformed(ActionEvent e) {
                chooseSong();
            }
        }); //anonyme Klasse

        exit = new JMenuItem("Beenden");                //Menüleiste wird erzeugt
        exit.addActionListener(new ActionListener() {   // Beim Drücken des Menüpunktes wird actionPerformed aufgerufen
            @Override                                   //erlaubt das einbinden von Metadaten in den Quelltext
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        }); //anonyme Klasse

        toMp3 = new JMenuItem("MP3 KONVERTER");         //Menüleiste wird erzeugt
        toMp3.addActionListener(new ActionListener() {  // Beim Drücken des Menüpunktes wird actionPerformed aufgerufen
            @Override
            public void actionPerformed(ActionEvent e) {    //
                if (liste == null) {
                    JOptionPane.showMessageDialog(LAF.this, ".MP3 DATEI ZUM KONVERTIEREN WÄHLEN"); //Zeigt Fehlermeldung an wenn keine Datei gewählt wurde
                } else {
                    format = ".mp3";
                    convertTO();
                }
            }
        }); //anonyme Klasse

        toWav = new JMenuItem("WAV KONVERTER");     //Menüleiste wird erzeugt
        toWav.addActionListener(new ActionListener() {  // Beim Drücken des Menüpunktes wird actionPerformed aufgerufen
            @Override
            public void actionPerformed(ActionEvent e) {

                if (liste == null) {
                    JOptionPane.showMessageDialog(null, ".WAV DATEI ZUM KONVERTIEREN WÄHLEN"); //Zeigt Fehlermeldung an wenn keine Datei gewählt wurde
                } else {
                    format = ".wav";

                    convertTO();
                }
            }
        }); //anonyme Klasse

        datei.add(oeffnen);     //Datei tatsächlich öffnen
        datei.add(exit);        //tatsächlich verlassen

        auswahl.add(toMp3);     //Auswahl tatsächlich tätigen
        auswahl.add(toWav);     //Auswahl tatsächlich tätigen

        meinMenu.add(datei);    //Auswahl tatsächlich tätigen
        meinMenu.add(auswahl);  //Auswahl tatsächlich tätigen

        convert = new JButton("Konvertieren");          //Menübutton wird erzeugt
        convert.setToolTipText("Datei/en konvertieren"); //Button Tip Text
        convert.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                if (liste == null) {
                    JOptionPane.showMessageDialog(null, "DATEI ZUM KONVERTIEREN WÄHLEN");
                } else {

                    Object[] selectionValues = {"mp3", "wav"};
                    String initialSelection = "mp3-320Kb/s-NQ";
                    Object selection = JOptionPane.showInputDialog(null, "WELCHES FORMAT SOLL ERSTELLT WERDEN", "Format", JOptionPane.QUESTION_MESSAGE, null, selectionValues, initialSelection);

                    if (selection == "mp3") {
                        format = ".mp3";
                        convertTO();
                    }
                    if (selection == "wav") {
                        format = ".wav";
                        convertTO();
                    }
                }
            }
        }); //anonyme Klasse

        removeSong = new JButton("Aus Liste entfernen");
        removeSong.setToolTipText("Die ausgewählten Dateien von der Liste entfernen");
        removeSong.addActionListener(
                new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        ausgewaehlteElemente = orgDataList.getSelectedIndices();

                        for (int i = ausgewaehlteElemente.length - 1; i >= 0; i--) {

                            System.out.println(ausgewaehlteElemente**);
                            orgListModel.removeElementAt(ausgewaehlteElemente**);

                        }
                    }
                }); //anonyme Klasse

        addSong = new JButton("Datei hinzufügen");
        addSong.setToolTipText("Datei/en zur Liste hinzufügen"); //Button Tip Text
        addSong.addActionListener(
                new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        chooseSong();
                    }
                }); //anonyme Klasse
        
        

        orgListModel = new DefaultListModel(); //DefaultListModell wird erzeugt
        newListModel = new DefaultListModel(); //DefaultListModell wird erzeugt
        orgDataList = new JList(orgListModel);
        newDataList = new JList(newListModel);



        orgDataLabel = new JLabel("ORIGINAL SONG:"); //Feld / Liste Original Datei
        newDataLabel = new JLabel("NEUER SONG:"); //Feld / Liste bearbeiteter Dateien

        panelButtons = new JPanel();
        panelButtons.setBackground(Color.gray); //Farbe des Button Panels (K, D, A)
        panelButtons.add(convert);
        panelButtons.add(addSong);
        panelButtons.add(removeSong);

        panelFlacFiles = new JPanel();
        panelFlacFiles.setBackground(Color.green); //Farbe des "ORIGINAL SONG" Frames
        panelFlacFiles.setBorder(BorderFactory.createMatteBorder(10, 10, 10, 10, Color.gray)); //Rahmen & Farbe
        panelFlacFiles.setLayout(new BorderLayout());
        panelFlacFiles.add(orgDataLabel, BorderLayout.NORTH);
        panelFlacFiles.add(orgDataList, BorderLayout.CENTER);

        panelNewFiles = new JPanel();
        panelNewFiles.setBorder(BorderFactory.createMatteBorder(10, 10, 10, 10, Color.gray));
        panelNewFiles.setBackground(Color.green); //Farbe des "NEUER SONG" Frames
        panelNewFiles.setLayout(new BorderLayout());
        panelNewFiles.add(newDataLabel, BorderLayout.NORTH);
        panelNewFiles.add(newDataList, BorderLayout.CENTER);

        panelFrame = new JPanel();
        panelFrame.setBackground(Color.lightGray);
        panelFrame.setLayout(new GridLayout(0, 2));
        panelFrame.add(panelFlacFiles);
        panelFrame.add(panelNewFiles);

        panelFortschritt = (JPanel) this.getGlassPane();
        panelFortschritt.setLayout(null);
        bar.setBounds(150, 250, 300, 25); //Fortschrittsbalken Update


        panelFortschritt.add(bar);


        this.setJMenuBar(meinMenu);
        this.add(panelButtons, BorderLayout.NORTH);
        this.add(panelFrame, BorderLayout.CENTER);
        this.setVisible(true);
    }

    public void chooseSong() {
        FileFilter filterFlac = new FileNameExtensionFilter(".flac", "flac");
        FileFilter filterMp3 = new FileNameExtensionFilter(".mp3", "mp3");      ////Filter für Filechooser
        FileFilter filterWav = new FileNameExtensionFilter(".wav", "wav");

        waehlen = new JFileChooser();
        waehlen.addChoosableFileFilter(filterFlac);
        waehlen.addChoosableFileFilter(filterMp3);      //Filter für Filechooser
        waehlen.addChoosableFileFilter(filterWav);
        waehlen.setMultiSelectionEnabled(true);
        waehlen.showOpenDialog(null);
        liste = waehlen.getSelectedFiles();

        oldFileFormat = new String[liste.length];
        newSong = new String[liste.length];

        flacData = new String[liste.length];
        orgFormat = new String[liste.length];
        newSongFormat = new String[liste.length];


        for (int i = 0; i < liste.length; i++) {

            oldFileFormat** = liste**.toString();
            flacData** = oldFileFormat**.substring(oldFileFormat**.lastIndexOf("/") + 1, oldFileFormat**.length());
            orgFormat** = oldFileFormat**.substring(oldFileFormat**.lastIndexOf("."), oldFileFormat**.length());
            System.out.println(orgFormat**);
            orgListModel.addElement(flacData**);
            panelFlacFiles.setBackground(Color.white);
        }
        SongPfad = oldFileFormat[0].substring(0, oldFileFormat[0].lastIndexOf("/") + 1);
    }

    public void convertTO() {

        orgSongsOld = orgDataList.getSelectedValuesList().toArray();
        orgSongs = new String[orgSongsOld.length];
        for (int i = 0; i < orgSongsOld.length; i++) {
            orgSongs** = (String) orgSongsOld**;

        }
        final int x = 100 / orgSongs.length;
        Thread runner;
        runner = new Thread() {
            @SuppressWarnings("SleepWhileInLoop")
            @Override
            public void run() {
                bar.setValue(0);
                panelFortschritt.setVisible(true);
                for (int i = 0; i < orgSongs.length; i++) {
                    newSong** = orgSongs**.replace(orgFormat**, format);
                    if (orgFormat**.toString() == null ? format == null : orgFormat**.toString().equals(format)) {
                        JOptionPane.showMessageDialog(null, "Gleiches ");
                    } else {
                        cmd = new String[4];
                        cmd[0] = "sox";
                        cmd[1] = "-f";
                        cmd[2] = SongPfad + orgSongs**;
                        cmd[3] = SongPfad + newSong**;

                        Runtime rt = Runtime.getRuntime();
                        Process p;
                        try {
                            p = rt.exec(cmd);
                            p.waitFor();

                        } catch (InterruptedException ex) {
                            Logger.getLogger(LAF.class
                                    .getName()).log(Level.SEVERE, null, ex);
                        } catch (IOException ex) {
                            Logger.getLogger(LAF.class
                                    .getName()).log(Level.SEVERE, null, ex);
                        }
                        newSongFormat** = newSong**.substring(newSong**.lastIndexOf("/") + 1, newSong**.length());
                        newListModel.addElement(newSongFormat**);


                        y = y + x;
                        Runnable runme = new Runnable() {
                            @Override
                            public void run() {
                                bar.setValue(y);
                            }
                        };
                        SwingUtilities.invokeLater(runme);
                        try {
                            Thread.sleep(100); //Platz auf dem Chip freigeben & nach dieser Zeit wieder rechnen lassen
                        } catch (Exception ex) {
                        }
                    }
                    bar.setValue(100);
                    JOptionPane.showMessageDialog(null, "FERTIGGESTELLT"); //Dialog beim fertigstellen der Konvertierung
                    panelFortschritt.setVisible(false);

                }
            }
        };
        runner.start();
    }

    @SuppressWarnings("ResultOfObjectAllocationIgnored")
    public static void main(String[] args) {
        new LAF();
    }
}```

lass dir dein Komando ausgeben und führe es mal selbst aus
bzw, lies dein Inputstream ein den dir das Komando zurückgeben müsste
ich vermute einfach mal dass er die Dateien nicht findet

Das soll jetzt nicht zuuu fies klingen, aber … das Gegenteil wäre schwieriger :wink:

Wenn du die Zeile
private JMenu auswahl;
auskommentierst, sollten eigentlich alle Stellen rot aufleuchten, wo noch etwas damit gemacht wird. Wenn man die auch alle auskommentiert, sollte das Menü weg sein.

Zu den Dateien… Ggf. solltest du das erstmal ganz isoliert testen:

class Test
{
    public static void main(String args[])
    {
        machDasWasAbZeile320GemachtWird();
    }

    private static void machDasWasAbZeile320GemachtWird()
    {
        // Hier der Aufruf, der die Dateien erzeugen sollte, 
        // bereinigt um alles, was mit dem GUI zu tun hat,
        // und mit irgendwelchen "Hartverdrahteten" 
        // Test-Dateinamen...
        ...
    }
}