# Verwaltungsprogramm mit Java



## =fire= (12. Dezember 2010)

Hallo,

ich habe mir vorgenommen Java zu lernen und möchte nun ein kleines Projekt erstellen. Ich dachte an ein Verwaltungsprogramm (anzeigen, hinzufügen, bearbeiten, löschen) Personalverwaltung o.ä. Mit einer MySQL Verbindung.
Was ich bis jetzt schon habe ist das auslesen aus der MySQL Tabelle in eine JTable. Aber irgendwie finde ich die JTable nicht so schön. Ich dachte eher an eine normale Tabelle, die wenn man auf eine Zeile klickt ein neues Fenster öffnet wo man den Eintrag dann wie ein Formular bearbeiten kann. Geht das, wenn ja wie?

Gibt es irgendwo schon Tutorials zu so einem vorhaben, wo ich mir das mal anschauen kann? Oder hat jemand so ein Programm z.B. Adressverwaltung?

Viele Grüße Fire


----------



## zeja (12. Dezember 2010)

Du könntest dir ja mal diesen Abschnitt durchlesen:
Java Insel: 19.19 Tabellen (JTable)


----------



## =fire= (13. Dezember 2010)

Hallo,

das habe ich mir schon angeschaut, aber welche Table Model benötige ich denn, ich muss ja eine eigenes Table Model erstellen, wenn ich die Tabelle auch bearbeiten will. AbstractTableModel oder welches?
Oder kann ich auch ein Event auf eine Zeile setzen? Bei Klick soll er dann den Datensatz in einem neuen Frame öffnen.


----------



## MiMi (13. Dezember 2010)

Ich glaube dann hast du nicht gut gelesen
Kapitel 19.19.2 "Basisklasse für eigene Modelle (AbstractTableModel)" 
beantwortet doch schonmal dein erste Frage.
Achja such auf der Seite mit strg-f mal nach "MouseListener". Denn Listing 19.56 hat nen Beispiel fuer dein Event


----------



## =fire= (15. Dezember 2010)

Hallo,

habe das nun soweit. Nur habe ich ein Problem. Woher weiß ich welcher Datenbankeintrag das ist, wenn ich drauf klicke? Kann ich eine ID übergeben?

Hier mein Code:


```
final BuecherModel model = new BuecherModel(conn);

        // Das JTable initialisieren
        Vector cols = model.getBuecher();

        BuecherView view = new BuecherView(cols);

        final JTable table = new JTable(view);

        window1.getContentPane().add( new JScrollPane( table ) );

        table.addMouseListener( new MouseAdapter()
        {
          public void mouseClicked( MouseEvent e )
          {
        	  popup();
            int rowAtPoint    = table.rowAtPoint( e.getPoint() );
            int columnAtPoint = table.columnAtPoint( e.getPoint() );
            System.out.printf( "%d/%d%n", rowAtPoint, columnAtPoint );
          }
        } );

....

	private void popup() {
		JFrame popup = new JFrame();
		popup.setSize(400, 200);
		popup.setVisible(true);


	}
```


----------



## =fire= (22. Dezember 2010)

Kann mir da niemand helfen?


----------



## MiMi (22. Dezember 2010)

Hm, auf der Seite steht doch noch mehr 
zb.


> Object getValueAt( int rowIndex, int columnIndex ) Gibt den Eintrag an der Stelle columnIndex und rowIndex zurück.


und 


> Wollen wir auf die inneren Daten zugreifen, benötigen wir das TableModel. Über getModel() lässt sich dies von der JTable erfragen. Wir können die Tabelle auch fragen, welche Zelle selektiert ist.
> 
> int col = t.getSelectedColumn();
> int row = t.getSelectedRow();
> System.out.println( t.getModel().getValueAt(row, col) );



Oder versteh ich deine Frage falsch?


----------



## =fire= (22. Dezember 2010)

Hallo,

ich glaube schon.. Ich mache ein kleines Beispiel. Ich habe eine Tabelle Bücher mit folgenden Einträgen:
ID           Titel            Autor
1             Javabuch   Peter
3             C++ Buch  Max

Angenommen die stehen jetzt in der JTable und ich will den zweiten Eintrag bearbeiten. Die Spalte ID soll aber eigentlich nicht angezeigt werden, woher weiß ich das es die ID 3 ist, die am Ende geändert werden soll.


----------



## MiMi (22. Dezember 2010)

Hm, was ist wenn du ne Hashmap hast mit nem Counter (halt die Zeile in der Tabelle) und nem Objekt zb. Buch (mit ID, Titel, Autor). Dann kannst du schauen welche Zeile markiert ist, die aus der Hashmap auslesen und hast das Entsprechende Objekt mit ID aus der Datenbank.
Ob man direkt Datenbank mit der JTable verbinden kann, weiss ich leider nicht.


----------

