Im Telefonbuch eine Tabelle ergänzen

  • Themenstarter Themenstarter Allan Blick
  • Beginndatum Beginndatum
A

Allan Blick

Gast
Hallo
Ich habe mir vorgenommen ein Telefonbuch zu schreiben und bin schon ganz am Anfang darauf gestoßen, dass ich gar nicht weiß, wie ich die Tabelle mit den Einträgen anzeigen kann.
Um nicht ganz ohne Ansatz hier zu stehen, habe ich es einfach so gemacht wie ich es konnte. Ich schicke euch mal den Code

Java:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;

class PhoneBook
{
    public static void main (String[] args)
    {
        int a = 1;
        JFrame frame1 = new JFrame("Telefonbuch");
        frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame1.setSize(500,200);
        Box container1 = new Box(BoxLayout.Y_AXIS);
        JPanel container2 = new JPanel(new FlowLayout());
        JPanel container3 = new JPanel(new FlowLayout());
        JPanel container5 = new JPanel(new FlowLayout());
        JLabel label1 = new JLabel("Neue Person eintragen!");
        JLabel label2 = new JLabel("Name:");
        JLabel label3 = new JLabel("Nummer:");
        final JTextField tf1 = new JTextField("Name");
        final JTextField tf2 = new JTextField("Nummer");
        JButton button1 = new JButton("Eintragen");
        button1.addActionListener(new ActionListener() { @Override
                                                        public void actionPerformed(ActionEvent action)
                                                        {
                                                            String name = tf1.getText();
                                                            String number = tf2.getText();                                                             
                                                            String[][] daten = new String[1][2];
                                                            daten[0][0] = "" + name;
                                                            daten[0][1] = "" + number;                          
                                                            String[] spaltenName = new String[2];
                                                            spaltenName[0] = "Name";
                                                            spaltenName[1] = "Nummer";
                                                            JFrame frame2 = new JFrame("Einträge");
                                                            frame2.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
                                                            frame2.setSize(500,400);
                                                            JPanel container4 = new JPanel(new FlowLayout());
                                                            JTable table1 = new JTable(daten, spaltenName);
                                                            container4.add(new JScrollPane(table1));
                                                            frame2.add(container4);
                                                            frame2.setVisible(true);                                                           
                                                        }
                                                       });
        container5.add(button1);
        container2.add(label1);
        container3.add(label2);
        container3.add(tf1);
        container3.add(label3);
        container3.add(tf2);
        container1.add(container2);
        container1.add(container3);
        container1.add(container5);
        frame1.add(container1);        
        frame1.setVisible(true);        
    }
}

Jetzt ist es ja so, dass sich immer pro Eintrag ein neues Fenster öffnet. Ich dachte vielleicht gibt es eine Methode wie add(), so dass die Tabelle ergänzt wird? Habe schon gegooglet und nur was von ArrayList gelesen. Ist das das gleiche? Oder kann ich die verwenden?
 
Na ja, du erzeugst halt mit deinem Button/ActionListener immer wieder einen neuen Frame2 und auch eine neue Tabelle. Am besten wäre es, wenn du nur in deinem Hauptframe 1 Tabelle drin hast, diese verbindest du dann mit einem TableModel und füllst das TableModel. Das TableModel aktualisiert dann die JTable.

Wahrscheinlich wird dein Programm noch umfangreicher werden, also wäre es vielleicht gar nicht schlecht, gleich von Anfang an alles in mehrere Klassen zu strukturieren, also View von Model zu trennen. Wo werden eigentlich deine Daten gespeichert?
 
Java:
import javax.swing.table.AbstractTableModel;


class QuadratTableModelSimple extends AbstractTableModel {
    
    }
}

Schon hier kommt die erste fehlermeldung: QuadratTableModelSimple is not abstract and does not override abstract method.

Wo kann man das denn festelgen, ob eine Klasse abstrakt ist? Nutze netbeans

Grüße
 
Du musst einfach die vererbten Methoden implementieren. Wenn du deine Klasse als abstrakt deklarieren würdest, müsstest du das nicht. Aber das ist natürlich nicht der Sinn der Sache 😉
Zumindest in Eclipse gibts "Quick fixes", dort kann man sich alle zu implementierenden Methoden in den Code generieren lassen - mit leerem Body natürlich.
 

Zurück
Oben