Hallo,
für mein folgendes Problem hab ich schon google durchsucht, auch dieses Forum, und habe aber nur indirekte Lösungen für meinen Problem gefunden, die ich zwar ausprobiert habe, aber leider nicht funktioniert haben. Das kann u.a. daran liegen, das ich noch dabei bin Java zu erlernen und ich vorher noch nie mit jTable programmiert habe.
Ich arbeite gerade an einem kleinem "Podcast"-Programm. In der ersten Klasse wird der "Podcast" Ordner ausgelesen und zählt, wieviel MP3s dort enthalten sind und erstellt mehre Arrays, die bestimmte ID3 Tags wie z.b Titel und das Jahr speichert und ausgibt (mit der API jid3lib). Dies funktioniert bisher auch ohne Probleme:
Nun möchte ich aber, das die Sachen die mit dem letzten Sytem.out.println ausgegeben werden (Titel, Jahr und Kommentar) in meinem jTable ausgegeben werden. Das Fenster sieht bisher so aus:
(Die "Länge" Spalte ist nur Platzhalter)
Der Code zu dem Fenster sieht momentan so aus:
Also zusammengefasst: Wenn z.b in dem Podcast Ordner 5 MP3s sind, soll er (nachdem man "Aktualisieren" gedrückt hat) 5 Zeilen in den jTable einfügen, in dennen der Titel, das Jahr und der Kommentar angezeigt wird, die ich bereits ja in der ersten Klasse ausgelesen und in Arrays gespeichert habe.
Mein Problem besteht momentan darin, das ich es noch nicht geschafft habe die Zeilen dynamisch zu verändern und dort Titel,Jahr und Kommentar für jede MP3 anzeigen zu lassen. Ich hoffe sehr das mir jemand dafür einen Lösungsvorschlag machen könnte
für mein folgendes Problem hab ich schon google durchsucht, auch dieses Forum, und habe aber nur indirekte Lösungen für meinen Problem gefunden, die ich zwar ausprobiert habe, aber leider nicht funktioniert haben. Das kann u.a. daran liegen, das ich noch dabei bin Java zu erlernen und ich vorher noch nie mit jTable programmiert habe.
Ich arbeite gerade an einem kleinem "Podcast"-Programm. In der ersten Klasse wird der "Podcast" Ordner ausgelesen und zählt, wieviel MP3s dort enthalten sind und erstellt mehre Arrays, die bestimmte ID3 Tags wie z.b Titel und das Jahr speichert und ausgibt (mit der API jid3lib). Dies funktioniert bisher auch ohne Probleme:
Java:
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import org.farng.mp3.MP3File;
import org.farng.mp3.TagException;
import org.farng.mp3.filename.FilenameTag;
import org.farng.mp3.id3.AbstractID3v2;
public class ddirdir {
public static void mp3lesen() throws IOException, TagException {
//Order nach Dateien auslesen
int i = 0;
String arrayMP3[];
int menge=0;
File dir = new File("podcasts\\");
File[] fileList = dir.listFiles();{
for(File f : fileList) { //Zählt wieviel Dateien im Ordner sind
i++;
}
arrayMP3 = new String[i]; //Erstellt einen Array in der größe der Anzahl der Dateien
i=0;
for(File f : fileList) { //Speichert Dateiname+Pfad in Array
arrayMP3[i]=f.getPath();
i++;
}
menge=i;
//MP3 auslesen
String Titel[] = new String[menge];
String Kommentar[] = new String[menge];
Integer Jahr[] = new Integer[menge];
int o = 0;
MP3File mp3file[];
for(i=0; i<menge; i++){
mp3file = new MP3File[menge];
mp3file[i] = new MP3File(arrayMP3[i]);
FilenameTag tags = mp3file[i].getFilenameTag();
mp3file[i] = tags.getMp3file();
if(mp3file[i].hasID3v2Tag()){
// System.out.println(true);
String number = new String();
AbstractID3v2 tag = mp3file[i].getID3v2Tag();
Titel[o] = tag.getSongTitle();
for(int a = 0; a<Genre.length(); a++){
if(Character.isDigit(Genre.charAt(a))){
number = number + Genre.charAt(a);
}
}
Kommentar[o] = tag.getSongComment();
Jahr[o] = Integer.valueOf(tag.getYearReleased());
System.out.println("Titel: "+Titel[o]+" Jahr: "+Jahr[o]+ " Kommentar: "+Kommentar[o]);
o++;
}
}
}
}
}
Nun möchte ich aber, das die Sachen die mit dem letzten Sytem.out.println ausgegeben werden (Titel, Jahr und Kommentar) in meinem jTable ausgegeben werden. Das Fenster sieht bisher so aus:
(Die "Länge" Spalte ist nur Platzhalter)
Der Code zu dem Fenster sieht momentan so aus:
Java:
import java.awt.event.KeyEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Event;
import java.awt.BorderLayout;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.KeyStroke;
import java.awt.Point;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JFrame;
import javax.swing.JDialog;
import java.awt.Dimension;
import java.io.IOException;
import java.util.Vector;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.JButton;
import org.farng.mp3.TagException;
public class fenster {
private JFrame jFrame = null; // @jve:decl-index=0:visual-constraint="52,3"
private JPanel jContentPane = null;
private JMenuBar jJMenuBar = null;
private JMenu fileMenu = null;
private JMenu editMenu = null;
private JMenu helpMenu = null;
private JMenuItem exitMenuItem = null;
private JMenuItem aboutMenuItem = null;
private JMenuItem cutMenuItem = null;
private JMenuItem copyMenuItem = null;
private JMenuItem pasteMenuItem = null;
private JMenuItem saveMenuItem = null;
private JDialog aboutDialog = null; // @jve:decl-index=0:visual-constraint="651,19"
private JPanel aboutContentPane = null;
private JLabel aboutVersionLabel = null;
private JScrollPane jScrollPane = null;
private JButton jButton = null;
private JScrollPane jScrollPane1 = null;
private JTable jTable = null;
/**
* This method initializes jFrame
*
* @return javax.swing.JFrame
*/
private JFrame getJFrame() {
if (jFrame == null) {
jFrame = new JFrame();
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setJMenuBar(getJJMenuBar());
jFrame.setSize(553, 275);
jFrame.setContentPane(getJContentPane());
jFrame.setTitle("Podcast Programm");
}
return jFrame;
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJScrollPane(), BorderLayout.NORTH);
jContentPane.add(getJButton(), BorderLayout.SOUTH);
jContentPane.add(getJScrollPane1(), BorderLayout.CENTER);
}
return jContentPane;
}
/**
* This method initializes jJMenuBar
*
* @return javax.swing.JMenuBar
*/
private JMenuBar getJJMenuBar() {
if (jJMenuBar == null) {
jJMenuBar = new JMenuBar();
jJMenuBar.add(getFileMenu());
jJMenuBar.add(getEditMenu());
jJMenuBar.add(getHelpMenu());
}
return jJMenuBar;
}
/**
* This method initializes jMenu
*
* @return javax.swing.JMenu
*/
private JMenu getFileMenu() {
if (fileMenu == null) {
fileMenu = new JMenu();
fileMenu.setText("Datei");
fileMenu.add(getSaveMenuItem());
fileMenu.add(getExitMenuItem());
}
return fileMenu;
}
/**
* This method initializes jMenu
*
* @return javax.swing.JMenu
*/
private JMenu getEditMenu() {
if (editMenu == null) {
editMenu = new JMenu();
editMenu.setText("Bearbeiten");
editMenu.add(getCutMenuItem());
editMenu.add(getCopyMenuItem());
editMenu.add(getPasteMenuItem());
}
return editMenu;
}
/**
* This method initializes jMenu
*
* @return javax.swing.JMenu
*/
private JMenu getHelpMenu() {
if (helpMenu == null) {
helpMenu = new JMenu();
helpMenu.setText("Hilfe");
helpMenu.add(getAboutMenuItem());
}
return helpMenu;
}
/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getExitMenuItem() {
if (exitMenuItem == null) {
exitMenuItem = new JMenuItem();
exitMenuItem.setText("Verlassen");
exitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
return exitMenuItem;
}
/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getAboutMenuItem() {
if (aboutMenuItem == null) {
aboutMenuItem = new JMenuItem();
aboutMenuItem.setText("Über..");
aboutMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JDialog aboutDialog = getAboutDialog();
aboutDialog.pack();
Point loc = getJFrame().getLocation();
loc.translate(20, 20);
aboutDialog.setLocation(loc);
aboutDialog.setVisible(true);
}
});
}
return aboutMenuItem;
}
/**
* This method initializes aboutDialog
*
* @return javax.swing.JDialog
*/
private JDialog getAboutDialog() {
if (aboutDialog == null) {
aboutDialog = new JDialog(getJFrame(), true);
aboutDialog.setTitle("About");
aboutDialog.setSize(new Dimension(172, 130));
aboutDialog.setContentPane(getAboutContentPane());
}
return aboutDialog;
}
/**
* This method initializes aboutContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getAboutContentPane() {
if (aboutContentPane == null) {
aboutContentPane = new JPanel();
aboutContentPane.setLayout(new BorderLayout());
aboutContentPane.add(getAboutVersionLabel(), BorderLayout.CENTER);
}
return aboutContentPane;
}
/**
* This method initializes aboutVersionLabel
*
* @return javax.swing.JLabel
*/
private JLabel getAboutVersionLabel() {
if (aboutVersionLabel == null) {
aboutVersionLabel = new JLabel();
aboutVersionLabel.setText("Version 1.0");
aboutVersionLabel.setHorizontalAlignment(SwingConstants.CENTER);
}
return aboutVersionLabel;
}
/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getCutMenuItem() {
if (cutMenuItem == null) {
cutMenuItem = new JMenuItem();
cutMenuItem.setText("Ausschneiden");
cutMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
Event.CTRL_MASK, true));
}
return cutMenuItem;
}
/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getCopyMenuItem() {
if (copyMenuItem == null) {
copyMenuItem = new JMenuItem();
copyMenuItem.setText("Copy");
copyMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
Event.CTRL_MASK, true));
}
return copyMenuItem;
}
/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getPasteMenuItem() {
if (pasteMenuItem == null) {
pasteMenuItem = new JMenuItem();
pasteMenuItem.setText("Paste");
pasteMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
Event.CTRL_MASK, true));
}
return pasteMenuItem;
}
/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getSaveMenuItem() {
if (saveMenuItem == null) {
saveMenuItem = new JMenuItem();
saveMenuItem.setText("Save");
saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
Event.CTRL_MASK, true));
}
return saveMenuItem;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
}
return jScrollPane;
}
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setText("Aktualisieren");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
try {
ddirdir.mp3lesen();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (TagException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
}
return jButton;
}
/**
* This method initializes jScrollPane1
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane1() {
if (jScrollPane1 == null) {
jScrollPane1 = new JScrollPane();
jScrollPane1.setViewportView(getJTable2());
}
return jScrollPane1;
}
/**
* This method initializes jTable
*
* @return javax.swing.JTable
*/
private JTable getJTable2() {
if (jTable == null) {
Vector data = new Vector();
Vector rowA = new Vector();
int o;
rowA.add( "" );
rowA.add( "" );
rowA.add( "" );
rowA.add( "" );
Vector rowB = new Vector();
rowB.add( "" );
rowB.add( "" );
rowB.add( "" );
rowB.add( "" );
Vector rowC = new Vector();
rowC.add( "" );
rowC.add( "" );
rowC.add( "" );
rowC.add( "" );
data.add( rowA );
data.add( rowB );
data.add( rowC );
// Die Titel für das Table
Vector title = new Vector();
title.add( "Titel" );
title.add( "Länge" );
title.add( "Jahr" );
title.add( "Kommentar" );
jTable = new JTable(data,title);
}
return jTable;
}
/**
* Launches this application
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
fenster application = new fenster();
application.getJFrame().setVisible(true);
}
});
}
}
Also zusammengefasst: Wenn z.b in dem Podcast Ordner 5 MP3s sind, soll er (nachdem man "Aktualisieren" gedrückt hat) 5 Zeilen in den jTable einfügen, in dennen der Titel, das Jahr und der Kommentar angezeigt wird, die ich bereits ja in der ersten Klasse ausgelesen und in Arrays gespeichert habe.
Mein Problem besteht momentan darin, das ich es noch nicht geschafft habe die Zeilen dynamisch zu verändern und dort Titel,Jahr und Kommentar für jede MP3 anzeigen zu lassen. Ich hoffe sehr das mir jemand dafür einen Lösungsvorschlag machen könnte
Zuletzt bearbeitet: