Autor Thema: Array Ansatz fehlt  (Gelesen 7772 mal)

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Array Ansatz fehlt
« am: 22.03.05 - 11:27:23 »
Hi @all,

ich habe es geschafft, eine Array-Variable von der Main an einen Constructor einer anderen Klasse zu übergeben. Jetzt versuche ich in einer Tabelle die Inhalte aus dem Array (jetzt noch statisch s.u. ) dynamisch zuzuweisen. Ich dachte an einer for-Schleife, jedoch fehlt mir da der Ansatz.

jTable1.setModel(new javax.swing.table.DefaultTableModel(
              new Object [][] {
                        {"Überschrift1", "Überschrift2", "Überschrift3", "Überschrift4", "Überschrift5", "Überschrift6"},
                        {mymN[0], null, null, null, null, null},
                        {mymN[1], null, null, null, null, null},
                        {mymN[2], null, null, null, null, null},
                        {mymN[3], null, null, null, null, null},
                        {mymN[4], null, null, null, null, null},
                        {mymN[5], null, null, null, null, null},
                        {mymN[6], null, null, null, null, null},
                        {mymN[7], null, null, null, null, null},
                        {mymN[8], null, null, null, null, null},
                        {mymN[9], null, null, null, null, null}
                    },
                    new String [] {
                        "Title 1", "Title 2", "Title 3", "Title 4", "Title 5", "Title 6"
                    }
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Marinero Atlántico

  • Gast
Re: Array Ansatz fehlt
« Antwort #1 am: 22.03.05 - 12:06:38 »
Die Tabelle zeigt automatisch das an, was im MOdell steht.
Aus dem Kopf weiss ich das aber jetzt auch nicht mehr in allen Details.
Suche nach einem Beispiel für eine JTable im Web oder in einem Buch.
Das Konzept ist jedenfalls smarter als einfach eine Reihe von Feldern, die man per Schleife füllt.

Marinero Atlántico

  • Gast
Re: Array Ansatz fehlt
« Antwort #2 am: 22.03.05 - 13:35:20 »
Es ist denk ich zumeist besser ein eigenes TableModel zu implementieren.
Dieses muß dass Interface TableModel implementieren (also die entsprechenden Methoden).
Dann läuft das im Prinzip automatisch.
Wichtig ist die Methode getValueAt(int rowIndex, int columnIndex)

mfg axel

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: Array Ansatz fehlt
« Antwort #3 am: 22.03.05 - 14:19:10 »
Ich habe die letzten zwei Stunden nach der Vorgehensweise gesucht und bin auch immer wieder auf das TableModel gestoßen. Scheint der richtige Weg zu sein. Ich versuche es.
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Marinero Atlántico

  • Gast
Re: Array Ansatz fehlt
« Antwort #4 am: 22.03.05 - 14:25:04 »
Hier sind Beispiele. Unten auf der Seite. 2nd Edition: chapter 18 Tables.
Auch ein Beispiel-Kapitel aus der (sowieso freien 1. Edition) über Tables.

http://www.manning.com/sbe/

Es hört sich erst mal wild an. So schwer ist es aber auch nicht.

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: Array Ansatz fehlt
« Antwort #5 am: 22.03.05 - 14:25:46 »
Was mir schon nach so kurzer Zeit aufgefallen ist, ist das oft die Wege recht unterschiedlich sind um ein Lösung zu entwickeln. Den Code, der durch Netbeans generiert wurde (siehe mein Beispiel), scheint ein schlechterer zu sein, als die Ansätze, die im Internet verbreitet sind. Da stellt sich jetzt die Frage, welcher Weg zu nehmen ist. Der Schädel raucht wieder....
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: Array Ansatz fehlt
« Antwort #6 am: 22.03.05 - 15:16:14 »
Hi Marinero,

ich bin noch mal folgenden Weg gegangen:

jTable1.setModel(new javax.swing.table.DefaultTableModel(
              new Object [][] {
                        {"Text1", "Text2", "Text3", "Text4", "Text5", "Text6"},
                        
                             },
                    new String [] {
                        "Title 1", "Title 2", "Title 3", "Title 4", "Title 5", "Title 6"
                    }
        ));
       jTable1.addRowSelectionInterval(0,0);

mit jTable1.addRowSelectionIntervall kann ich jetzt die erste Zeile auswählen (wollte ich eigentlich in diesem Augenblick nicht aber gut). Ich habe an dieser Stelle keine Methode für ein ADDROW gefunden oder Appendrow. Ich habe so das Gefühl, das ich hier zuviel verlange...  Eine Zeile anzuhängen scheint an einem jTable nicht direkt zu gehen.
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: Array Ansatz fehlt
« Antwort #7 am: 22.03.05 - 15:51:55 »
Ich bin einen Schritt weiter. Beim Erstellen des jTables kann man ja in den Klammern die Zeilen und Spalten mitgeben. Da ich bereits vorher weis, wieviele Einträge kommen, ist das vollkommen ausreichend. Dennoch wäre das anfügen von Zeilen an einen bestehenden JTable interessant. Geht so wie ich gesucht habe wahrscheinlich nicht. ---> Wieder was gelernt.

Gruss

Andreas
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Marinero Atlántico

  • Gast
Re: Array Ansatz fehlt
« Antwort #8 am: 23.03.05 - 11:01:14 »
... siehst du eigentlich Tabellenüberschriften?
Die sieht man nämlich nur, wenn man die JTable in eine JScrollPane tut (typisches gotcha).
So ungefähr:
Code
JScrollPane sp = new JScrollPane(jTable); // am besten direkt nach der Generierung des JTable. 
So unterschiedlich sind die "Ansätze" nicht. Sie sehen nur unterschiedlich aus.
Bei dir wird ja auch ein TableModel erzeugt. Nur ist das eben nicht so flexibel.

Alternative wäre:
Code
jTable1.setModel(new MyModel()); 
und...
Code
public class MyModel extends TableModel {
}
Bei Eclipse müsste man einfach auf die richtige Glühbirne links klicken und DummyImplementierungen aller zu implementierenden Methoden würden generiert.
Die Methoden selber sind ziemlich selbsterklärend.
Ansonsten:
hier nachschlagen:
http://java.sun.com/j2se/1.4.2/docs/api/index.html
Im Netbeans GUI Editor kannst du problemlos ein eigenes Modell implementieren (was besser ist).
Im Prinzip geht es aber überhaupt nicht über die Syntax und wirklich tiefe technische Dinge (die man letztlich dann eben doch nicht richtig versteht ), sondern darum  OO zu kapieren.

Axel

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: Array Ansatz fehlt
« Antwort #9 am: 24.03.05 - 09:51:36 »
Stimmt der Titel wurde tatsächlich nich angezeigt. : ) gut gesehen. Zu Anfang war mir das Füllen der Felder im jTable wichtiger. Ich habe dort den Titel selbst dynamisch gefüllt. Somit kann ich das komplette Table dynamisch füllen. Wenn sich am Titel was ändert, dann will ich später über ein konfig-Doc die spalten und Zeilen einstellen. Das sollte ich jetzt hinbekommen. Ich bin übrigens so weit, das die Spaltenüberschriften und die erste Spalte im jTable gefüllt wird. CODE:

int m = 1;
         for(k=0;k<myi;k++)
            jTable1.setValueAt(mymN[k], m++, 0);
            jTable1.setValueAt("Überschrift1",0,1);
            jTable1.setValueAt("Überschrift1",0,2);
            jTable1.setValueAt("Überschrift1",0,3);
            jTable1.setValueAt("Überschrift1",0,4);
            jTable1.setValueAt("Überschrift1",0,5);
...
...

Das heisst, die Koordinaten können jetzt gefüllt werden.  HIER bin ich jetzt auch schon auf das erste Problem gestossen. Ich habe jetzt die Daten aus der Notes Datenbank geholt (über den Namen des Mitarbeiters--> mit "getallDocumentsbykey") . Somit habe ich jetzt eine Array Variable gefüllt und an die Gui-Klasse übergeben.  Nur wie kann ich jetzt die richtige Koordinate finden und was noch wichtiger, muss ich nach jedem Durchlauf aus der DominoC die gut füllen ? oder kann ich erst alles Sammeln und dann alles zusammen an die gui übergeben ??? Wie immer der Denkansatz fehlt...
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Marinero Atlántico

  • Gast
Re: Array Ansatz fehlt
« Antwort #10 am: 24.03.05 - 11:34:36 »
Ich bin übrigens so weit, das die Spaltenüberschriften und die erste Spalte im jTable gefüllt wird.
Code
Das ist ein Hack. Ich würds nicht so machen. Dafür gibt es TableHeader, ColumnModel und das ganze Zeug. 
Wenn du die JTable in ein JScrollPane tust (nicht so schwierig, s.o., ist das einfach. Man muß halt nur wissen: Ohne JScrollPane, kein TableHeader.  
[quote]
Somit habe ich jetzt eine Array Variable gefüllt und an die Gui-Klasse übergeben.  Nur wie kann ich jetzt die richtige Koordinate finden und was noch wichtiger, muss ich nach jedem Durchlauf aus der DominoC die gut füllen ? oder kann ich erst alles Sammeln und dann alles zusammen an die gui übergeben ??? Wie immer der Denkansatz fehlt...
[/quote]
Du solltest dich von den Gedanken lösen, dass JTable die Tabelle ist. 
Vielmehr besteht die Tabellenkomponente aus mehreren über Interfaces verbundenen Klassen. 
JTable ist lediglich für das rendering der Tabelle verantwortlich. 
Die Tabellendaten selber gehören in das TableModel. 
Dem musst du das auch übergeben. 
Also: Der Array ins TableModel. 
Da gibt es ja die CallBack Methode setValueAt(koordinateX, koordinateY); 
Dann funktioniert das schon. 

Wie gesagt ist Swing sehr objekt-orientiert und man muß sich beim programmieren langsam aber sicher dem Verständnis der Prinzipien annähern. 
Schau dir am besten Beispiele an. [/quote]

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: Array Ansatz fehlt
« Antwort #11 am: 30.03.05 - 11:54:56 »
Der Titel wird jetzt angezeigt. Läuft gut. So sieht jetzt mein Code aus s.u:

---> Das Problem, vordem ich jetzt stehe ist das dynamische Füllen der Zellen. Eine Lösung hatte ich ja s.u. nur da wurde kein Titel angezeigt. Jetzt wo der Titel da ist, muss ich wieder über New Object gehen und da habe ich keine Syntax gefunden, um die Zellen anzusprechen... )



         jTable1.setModel(new javax.swing.table.DefaultTableModel(
                new Object [][] {
                   
??? --> Wie bekomme ich jetzt den Zugriff auf die Zellen ??? --> Baustelle (vorher s.u) Da ging das, nur ohne Titel. Das hatte ich den Titel dynamisch gefüllt.

                },
                new String [] {
                    "Splate1", "Spalte2", "Spalte3", "Spalte4","Spalte5","Spalte6"
                }
            ));
         //hier---Ende
         
         
        //int m = 1;
         //for(k=0;k<myi;k++)
            //jTable1.setValueAt(mymN[k], m++, 0);
            //jTable1.setValueAt("Montag",0,1);
            //jTable1.setValueAt("Dienstag",0,2);
            //jTable1.setValueAt("Mittwoch",0,3);
            //jTable1.setValueAt("Donnerstag",0,4);
            //jTable1.setValueAt("Freitag",0,5);
            
            jScrollPanel.setViewportView(jTable1);
                                jPanel2.add(jScrollPanel, java.awt.BorderLayout.CENTER);
         
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: Array Ansatz fehlt
« Antwort #12 am: 30.03.05 - 12:18:09 »
ich empfehle dir, mal das Swing Tutorial von sun zu machen, vielleicht siehst du dann klarer.
http://java.sun.com/docs/books/tutorial/uiswing/index.html

vielleicht nicht alles, vielleicht reicht die Stelle mit dem JTable
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: Array Ansatz fehlt
« Antwort #13 am: 30.03.05 - 12:43:11 »
Werd ich machen. Klasse.

Danke.
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: Array Ansatz fehlt
« Antwort #14 am: 30.03.05 - 12:50:41 »
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Marinero Atlántico

  • Gast
Re: Array Ansatz fehlt
« Antwort #15 am: 30.03.05 - 12:56:02 »
Erzeuge dir doch einfach mal zuerst eine Klasse:

MyTableModel implements javax.swing.table.TableModel

Versuche dann diese Klasse konkret einzubinden.
Du musst in MyTableModel alle Methoden implementieren, die in javax.swing.table.TableModel drin stehen. 

Zusätzlich noch ein Property:
private String [][] schmidtData;
und eine Methode
public void setSchmidtData (String[][] myArr) {
  schmidtData = myArr;
}

Implementierung für getValueAt (aus Interface):
public Object getValueAt (int rowIndex, int columnIndex) {
String cellVal = schmidtData[rowIndex] [columnIndex];
return celVal;
}
Implementierung für getRowCount()
int getRowCount() {
valRCount = schmidtData.length;
return valCount;
}

int getColumnIndex() {
valCCount = schmidtData[].length;
}

}
}
Sobald du die Klasse hast, können wir weitersehen.

Marinero Atlántico

  • Gast
Re: Array Ansatz fehlt
« Antwort #16 am: 30.03.05 - 12:58:51 »
Oder wie Thomas gesagt hat. Versuch einfach den Source code dort nachzuvollziehen (den dürfte es zum Download geben.
Alles inklusive nach Kapitel Editors und Renderers ist erst einmal unnötig.

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: Array Ansatz fehlt
« Antwort #17 am: 01.04.05 - 15:15:12 »
Ich habe jetzt einen möglichen Ansatz gefunden. Mit Vektoren kann man recht einfach die Zellen in einer Schleife durchlaufen lassen. Beispiel:

for(i=0;i<myi;i++){
            Vector Name = new Vector();
           Name.add(mymN);
           Name.add(null);
           Name.add(null);
           Name.add(null);
           Name.add(null);
           Name.add(null);
           data.add(Name);

Tja der Weg ist sehr steinig. Vorallem die gui.
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Marinero Atlántico

  • Gast
Re: Array Ansatz fehlt
« Antwort #18 am: 01.04.05 - 16:53:19 »
Kannst du bitte mal die Klasse posten, die das TableModel implementiert?
Dein Vector sollte eine Instanzvariable und keine lokale sein.
Mit mehrdimensionalen Arrays geht das auch.
ArrayList sollte ein bischen schneller sein als Vector. Besonders wichtig ist das aber gerade nicht.
Normalerweise würde man das btw. so machen:
Code
List name = new ArrayList();
aber das nur am Rande. 
 
Aber wie ich gesagt habe. Das komplexe für Einsteiger ist aus meiner Sicht, dass da so viel aus verschiedenen Bereichen zusammenkommt
- Java als Sprache
- OO Konzepte
- Swing als wirklich komplexe api.
- GUIs als solches
- geschichtete Architekturen
Und das vermengt sich eben dann.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz