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();
}
}```