soGehtDas
Grünschnabel
Hallo Community,
dies ist mein erster Post bei euch, lang und oft hab ich hier schon lesend Hilfe fuer meine kleinen Java-Probleme gefunden, doch diesmal finde ich leider keine Loesung.
Mein Problem: ich hab einen leeren JTable, welchen ich nach und nach mit Daten fuettern will, aber egal wie oft ich meinen JDialog zur Dateneingabe aufrufe, mein Table bleibt leer. Die Daten beziehe ich aus einer ArrayList, deren Infos ich in ein 2d-Array packe, welches dann in meinem JTable angezeigt werden soll, was aber nicht passiert.
Das Programm soll eine "Buchverwaltung" werden. Sinn: einarbeiten ins Swing.
Fuer die GUI
meine Buch Klasse:
und mein eigener Dialog zum "fuettern":
Hoffe, dass ihr mir helfen koennt.
Gruessle,
sGD
dies ist mein erster Post bei euch, lang und oft hab ich hier schon lesend Hilfe fuer meine kleinen Java-Probleme gefunden, doch diesmal finde ich leider keine Loesung.
Mein Problem: ich hab einen leeren JTable, welchen ich nach und nach mit Daten fuettern will, aber egal wie oft ich meinen JDialog zur Dateneingabe aufrufe, mein Table bleibt leer. Die Daten beziehe ich aus einer ArrayList, deren Infos ich in ein 2d-Array packe, welches dann in meinem JTable angezeigt werden soll, was aber nicht passiert.
Das Programm soll eine "Buchverwaltung" werden. Sinn: einarbeiten ins Swing.
Fuer die GUI
Java:
package bibliothek;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
public class BiblGUI extends JFrame {
Container cp = getContentPane();
Border etche = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
JPanel mainPane = new JPanel(new BorderLayout());
JPanel ceContent = new JPanel(new BorderLayout());
JPanel noSymbol = new JPanel();
JPanel weFunc = new JPanel(new BorderLayout());
JPanel eaPane = new JPanel();
JPanel soPane = new JPanel();
JButton neuBuch = new JButton("Hinzufügen");
JButton delBuch = new JButton("Testen");
JTabbedPane tp = new JTabbedPane();
public static JTable buchTable;
private String[] spaltenNamen = { "Titel", "Autor", "Kategorie", "Bewertung" };
private String[][] buchDatenArr;
private final String[] NAMES = {"1", "2", "3", "3", "4", "5"};
JList buchListe = new JList(NAMES);
private BuchInputDialog bid;
// ~~~~~~~~~~~~~~~~~~~~~~~~~
// ------ Konstruktor ------
public BiblGUI() throws Exception {
super();
this.setTitle("Buecher-Archiv");
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ------ JFrame Settings ------
Dimension frameSize = new Dimension(800, 600);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int posX = (screenSize.width - frameSize.width) / 2;
int posY = (screenSize.height - frameSize.height) / 2;
this.setSize(frameSize);
this.setLocation(posX, posY);
this.setResizable(false);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ------ anonyme ButtonListener ------
neuBuch.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
bid = new BuchInputDialog();
}
});
delBuch.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(Buch.buecherListe);
}
});
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ------ Komponenten Settings ------
mainPane.setBorder(etche);
noSymbol.setBorder(etche);
soPane.setBorder(etche);
eaPane.setBorder(etche);
buchDatenArr = Buch.createBuchListe();
buchTable = new JTable(buchDatenArr, spaltenNamen);
tp.addTab("Nummer 1", new JScrollPane(buchTable));
tp.addTab("Nummer 2", buchListe);
ceContent.add(tp);
//weFunc.add(neuBuch, BorderLayout.NORTH);
//weFunc.add(delBuch, BorderLayout.SOUTH);
noSymbol.add(neuBuch);
noSymbol.add(delBuch);
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ------ Komponenten in mainPane ------
mainPane.add(ceContent, BorderLayout.CENTER);
mainPane.add(noSymbol, BorderLayout.NORTH);
mainPane.add(weFunc, BorderLayout.WEST);
mainPane.add(soPane, BorderLayout.SOUTH);
mainPane.add(eaPane, BorderLayout.EAST);
cp.add(mainPane);
}
}
meine Buch Klasse:
Java:
package bibliothek;
import java.util.*;
class Buch {
public static final String[] KATEGORIEN = { "Fachbuch", "Belletristik", "Sachbuch"};
public static final String[] GENRE_FB = { "Programmierung", "Betriebssysteme", "Webtechnik", "Sonstiges"};
public static final String[] GENRE_BT = { "Lyrik", "Fantasy", "SciFi", "Sonstiges"};
public static final String[] GENRE_SB = { "Natur", "Wissenschaft", "Bilder"};
public static final int[] bewertungSys = { 1, 2, 3, 4, 5 };
private final String erstellDatum = "";
public static List<Buch> buecherListe = new ArrayList<Buch>();
private static Buch[] buecherArray;
private static int listenLaenge;
private static String[][] buchDetArr;
private String autor;
private String titel;
private String erscheinung;
private int bewertung;
private String kategorie;
private String genre;
// ------------- Konstruktoren -------------
public Buch(String autor, String titel, String kategorie) {
this.autor = autor;
this.titel = titel;
this.kategorie = "";
this.bewertung = 0;
}
public Buch(String autor, String titel, String kategorie, String genre, int bewertung) {
this.autor = autor;
this.titel = titel;
this.kategorie = kategorie;
this.genre = genre;
this.bewertung = bewertung;
}
[ .... setter und getter hab ich mal weggelassen... ]
und mein eigener Dialog zum "fuettern":
Java:
package bibliothek;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class BuchInputDialog extends JDialog {
private String titelEingabe;
private String autorEingabe;
private String kategorieWahl;
private JLabel titelLabel = new JLabel("Titel*");
private JLabel autorLabel = new JLabel("Autor*");
private JLabel hinweisLabel = new JLabel("* Pflichtfelder");
private JTextField titelFeld = new JTextField("Titel eingeben...");
private JTextField autorFeld = new JTextField("Autor eingeben...");
private JComboBox genreWahlBox = new JComboBox(Buch.KATEGORIEN);
private JButton okButton = new JButton("OK");
private JButton abbrechenButton = new JButton("Abbrechen");
JPanel inhaltPanel = new JPanel();
public BuchInputDialog() {
super();
setTitle("Neues Buch...");
Dimension frameSize = new Dimension(200, 300);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int posX = (screenSize.width - frameSize.width) / 2;
int posY = (screenSize.height - frameSize.height) / 2;
this.setSize(frameSize);
this.setLocation(posX, posY);
this.setVisible(true);
// Listener
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
titelEingabe = titelFeld.getText();
autorEingabe = autorFeld.getText();
kategorieWahl = genreWahlBox.getSelectedItem().toString();
Buch.createBuch(autorEingabe, titelEingabe, kategorieWahl);
System.out.println(Buch.buecherListe);
dispose();
}
});
abbrechenButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
// Ende Listener
inhaltPanel.setLayout(new BoxLayout(inhaltPanel, BoxLayout.Y_AXIS));
inhaltPanel.add(titelLabel);
inhaltPanel.add(titelFeld);
inhaltPanel.add(autorLabel);
inhaltPanel.add(autorFeld);
inhaltPanel.add(genreWahlBox);
inhaltPanel.add(new JLabel(""));
inhaltPanel.add(hinweisLabel);
inhaltPanel.add(new JLabel(""));
inhaltPanel.add(okButton);
inhaltPanel.add(abbrechenButton);
this.add(inhaltPanel);
}
}
Hoffe, dass ihr mir helfen koennt.
Gruessle,
sGD
Zuletzt bearbeitet: