Mahlzeit, bin relativ neu hier und auch noch nicht sehr versiert im Umgang mit Java.
zum Konzept: Ich bin DJ und wollte mir ein kleines Programm schreiben, wo ich oben 4 JTextFields habe, in die ich Name, Titel usw eingeb, dann auf nen Button klick, der mir die Daten dann in eine JTable haut. Da ich mich mit JTAble noch nicht so auskenne, steh ich vor folgendem Problem: Erstmal wie krieg ich das hin, dass ich eine leere JTable hab mit Überschriften, ohne in einem String-Array die Anzahl der Felder festzulegen. ich hab das zunächst so gelöst:
jetzt zum nächsten problem: wie krieg ich das hin, dass ich den Text, den ich in die JTextFields eingeb, in die JTable kommt. ich hab das zunächst mal mit setValueAt gelöst aber das ist glaub weniger elegant.Hier mal der komplette Code, ich hoffe jemand kann mir weiterhelfen:
zum Konzept: Ich bin DJ und wollte mir ein kleines Programm schreiben, wo ich oben 4 JTextFields habe, in die ich Name, Titel usw eingeb, dann auf nen Button klick, der mir die Daten dann in eine JTable haut. Da ich mich mit JTAble noch nicht so auskenne, steh ich vor folgendem Problem: Erstmal wie krieg ich das hin, dass ich eine leere JTable hab mit Überschriften, ohne in einem String-Array die Anzahl der Felder festzulegen. ich hab das zunächst so gelöst:
Java:
//die leeren Zeilen der Tabelle:
private String[][] emptydata = new String[][]{
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
};
//Die Ueberschrift der Spalten:
private String[] ueberschrift = new String[]{"Artist", "Title", "Label", "Genre"};
//Die Tabelle bezieht sich auf den String-Array mit leeren Zellen und die Ueberschriften
private JTable bib = new JTable(emptydata,ueberschrift);
Java:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import javax.swing.*;
import javax.swing.table.JTableHeader;
public class VinylsFrame extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
private JLabel artist = new JLabel("Artist:");
private JLabel title = new JLabel("Title:");
private JLabel label = new JLabel("Label:");
private JLabel genre = new JLabel("Genre:");
private JTextField artistTF = new JTextField(20);
private JTextField titleTF = new JTextField(20);
private JTextField labelTF = new JTextField(20);
private JTextField genreTF = new JTextField(20);
private JButton add = new JButton("add Vinyl");
private JButton del = new JButton("delete Vinyl");
//die leeren Zeilen der Tabelle:
private String[][] emptydata = new String[][]{
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
};
//Die Ueberschrift der Spalten:
private String[] ueberschrift = new String[]{"Artist", "Title", "Label", "Genre"};
//Die Tabelle bezieht sich auf den String-Array mit leeren Zellen und die Ueberschriften
private JTable bib = new JTable(emptydata,ueberschrift);
//Konstruktor
public VinylsFrame(){
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
init();
}
private void init(){
//Das Hauptpanel:
JPanel mainpanel = new JPanel();
mainpanel.setLayout(new BorderLayout());
this.setSize(300,200);
this.setTitle("myVinyls");
add.addActionListener(this);
//Die Labels und Eingabe-Textfields:
JPanel input = new JPanel();
input.setLayout(new GridLayout(2,4));
input.add(artist);
input.add(title);
input.add(label);
input.add(genre);
input.add(artistTF);
input.add(titleTF);
input.add(labelTF);
input.add(genreTF);
//Die add- und delete-Buttons:
JPanel buttons = new JPanel();
buttons.setLayout(new GridLayout(1,2));
buttons.add(add);
buttons.add(del);
//Die Tabelle:
JPanel bibliothek = new JPanel();
bibliothek.setLayout(new GridLayout(1,1));
bibliothek.add(new JScrollPane(bib));
//Ausrichtung der Panels:
mainpanel.add(input, BorderLayout.NORTH);
mainpanel.add(buttons, BorderLayout.CENTER);
mainpanel.add(bibliothek, BorderLayout.SOUTH);
this.setContentPane(mainpanel);
this.pack();
this.setVisible(true);
}
public void actionPerformed(ActionEvent evt){
Object src = evt.getSource();
if(src == add){
bib.setValueAt(artistTF.getText(),0,0);
bib.setValueAt(titleTF.getText(),0,1);
bib.setValueAt(labelTF.getText(),0,2);
bib.setValueAt(genreTF.getText(),0,3);
}
}
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
}
Zuletzt bearbeitet: