Zwei String Attribute über eine Methode als Zeilen in einer Tabelle darstellen

D

derErnesto

Gast
Hallo,

ich habe eine Tabelle (mit vier Spalten und x-Zeilen), die sagen wir mal so aussieht:
Code:
Spalte 1      |     Spalte 2       |  Spalte 3     |      Spalte 4
Deutschland  |    Schweiz      |      xyz        |          xyz                    
Türkei       |       Iran            |      xyz         |         xyz  
USA          |       China           |     xyz         |         xyz  
...             |       ....             |       .....       |        .....
Ich lese nur die Zeileninhalte von Spalte 1 und Spalte 2 (wie der Code vorher aussieht ist irrelevant für mein Problem) und übergebe diese einer Methode, wie folgt:

Java:
// hier ist mein Code wie ich auf die einzelnen Zeilen rankomme
//wichtig ist, dass in jedem durchlauf, die werte an die Methode neueTabelle übergeben werden
//somit wird also nur eine Zeile pro Durchlauf übergeben
for(XYZ xy : x)
{
neueTabelle(zeile1, zeile2);
}
//hier geht mein Code weiter

Nun möchte ich in der Methode neueTabelle(String zeile1, String zeile2) folgendes realisieren (hier als Beispiel umständlich realisiert):
Java:
public void neueTabelle(String zeile1, String zeile2)
{
      String[][] zeilen = { {"Deutschland", "Schweiz"}, {"Türkei", "Iran"}, {"USA", "China"}, {"...","...."} };
      String[] spalte = {"Erste Spalte", "Zweite Spalte"};
      JFrame f = new JFrame();
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      JTable table = new JTable(zeilenEintraege, spaltenEintraege);
	f.add(new JScrollPane(table));
	f.pack();
	f.setVisible(true);
}

Meine Frage:
Ich möchte eine neue Tabelle mir nur zwei Spalten erstellen. Diese neuen Spalten sollen die Zeileninhalte der ursprünglichen Tabelle (Spalte 1 und Spalte 2) enthalten. Die Reihenfolge kann jedoch unterschiedlich sein. Also "Deutschland" und "China" können auch in einer Zeile stehen!
Die Methode neueTabelle bekommt zwei Strings übergeben. Wie kann ich diese zwei Strings (eventuell an ein Vector, Liste, etc. übergeben) als Zeilen einer neuen Tabelle definieren, ohne die Zeilen manuell angeben zu müssen?

Vielen Dank
PS: eine kurze Idee als Codestück würde reichen, eventuell als auch Pseudocode.
 
Zuletzt bearbeitet von einem Moderator:

Michael...

Top Contributor
Verstanden habe ich es nicht.
Eventuell hilft Dir DefaultTableModel weiter. Wenn man ein solches als TableModel für die neue JTable verwenden, kann man per addRow(...) oder insertRow(...) leicht weitere Zeilen hinzufügen.
 
D

derErnesto

Gast
Momentan wird ja mit dem obigen Code eine Tabelle mit zwei Spalten und mehreren Zeilen (Deutschland, Schweiz, etc) erstellt.

Ich möchte die Zeileninhalte nicht manuell eintippen, sonderen diese dynamisch erweitern bzw. einlesen.
Im vergleich zum obigen Code möchte ich etwas in der folgenden Art:

Java:
public void neueTabelle(String zeile1, String zeile2)
{
      String[][] zeilen = { {zeile1}, {zeile2} };
      String[] spalte = {"Erste Spalte", "Zweite Spalte"};
      JFrame f = new JFrame();
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      JTable table = new JTable(zeilenEintraege, spaltenEintraege);
    f.add(new JScrollPane(table));
    f.pack();
    f.setVisible(true);
}

Durch die Zeile 3. im Code werden die Zeileninhalte von der ursprünglichen Tabelle in die neue Tabelle eingefügt. Aber das Problem ist, dass für jede Zeile eine neue Tabell erzeugt wird. Wie kann ich die 3. Zeile im Code, so ändern, dass die übergebenen Attribute nur in eine Tabelle eingefügt werden. So lange ich der Methode Attribute übergebe so lange sollen auch neue Zeilen mit den Inhalten der Attribute gefüllt werden.
Ich hoffe es ist jetzt verständlicher geworden!
 

Michael...

Top Contributor
Ich hoffe es ist jetzt verständlicher geworden!
Naja. Die übergebenen Parameter zeile1 und zeile2 sollen eigentlich Inhalt von Zelle1 und Zelle2 der neuen Zeile werden?

Wenn Du nicht jedes mal eine neue Tabelle willst warum nimmst Du nicht eine bestehende?
Nochmals der Hinweis auf:DefaultTableModel (Java Platform SE 6)
Erzeuge eine Tabelle mit DefaultTableModel, dann kannst Du jederzeit dem Model und damit der JTable neue Zeilen hinzufügen.
 
D

derErnesto

Gast
Danke für den Tipp. Ich habe jetzt mal den Code erweitert zu:
Java:
public void neueTabelle(String zeileInhaltInSpalte1, String zeilenInhaltInSpalte2)
	{
			String[][] zeilen = {{zeileInhaltInSpalte1},{zeilenInhaltInSpalte2}};
			String[] spalten = {"Spalte1", "Spalte2"};
			
			DefaultTableModel model = new DefaultTableModel(zeilen , spalten );
			JTable table = new JTable(model);
			
			JScrollPane scrollPane = new JScrollPane(table);
			
			JPanel mainPanel = new JPanel();
			JFrame frame = new JFrame("New Window");
			
			mainPanel.setLayout(new BorderLayout());
			frame.getContentPane().add(mainPanel);
			frame.pack();
			frame.setVisible(true);
	}

Die Parameternamen habe ich auch geändert weil die ursprünglichen schon bisschen verwirrend waren. Der erste Parameter zeileInhaltInSpalte1 bzw. zeileInhaltInSpalte2, sagen aus, dass die übergebenen String-Werte in der ersten/zweiten Spalte aufgelistet werden sollen.

Ich habe jetzt folgedes Problem: nehmen wir folgede Werte für die Parameter an:
Java:
//für die erste for-schleife, in der die Werte für die Methode 
zeileInhaltInSpalte1="Deutschland"; 
zeileInhaltInSpalte2="Schweiz";

//für die zweite for-schleife
zeileInhaltInSpalte1="Deutschland"; 
zeileInhaltInSpalte2="China";

Als Ergebniss möchte ich nur eine Tabelle erhalten, die wie folgt gefüllt ist:
Spalte1 | Spalte2
Deutsch. | Schweiz
Deutsch. | China

Momentan erhalte ich jedoch zwei Tabellen. Tabelle1 sieht so aus:
Spalte1 | Spalte2
Deutsch. | leer
Schweiz | leer

Tabelle2 sieht so aus:
Spalte1 | Spalte2
Deutsch. | leer
China | leer


Also die zweite Spalte erhält keine Einträge. Wie kann ich das ändern und auch dafür sorgen, dass nicht für jede Zeile eine neue Tabelle erzeugt wird?
 
D

derErnesto

Gast
Ein dummer Fehler ist mir unterlaufen. Ich habe die Klammerung falsch gesetzt.
Java:
 String[][] zeilen = {{zeileInhaltInSpalte1,zeilenInhaltInSpalte2}};

Jetzt werden beide Spalten mit den jeweiligen Zeilen befüllt, aber warum erhalte ich immer für jede Zeile eine neue Tabelle?
Für zwei Zeilen erhalte ich jeweils zwei Tabellen. In jeder Tabelle ist nur eine Zeile vorhanden.
 

Michael...

Top Contributor
Du erzeugst ja immer noch jedesmal eine neue JTable.

Hier mal die prinzipielle Vorgehensweise:
Java:
private DefaultTableModel model;
...
    ...{
        ...
        model = new DefaultTableModel(...............);
        JTable table = new JTable(model);
        ...
    }

    public void appendNewRow(String value1, String value2) {
        ...
        model.addRow(...);
    }
 
D

derErnesto

Gast
so ganz funkioniert das bei mir nicht. wo soll ich außerhalb der Methode "neueTabelle"
Java:
 model = new DefaultTableModel(...............);
definieren, wenn ich nicht die Zeilen- und Spaltenwerte habe?


Ich zeige dir mal den groben Codesegment: Wie muss ich die Zeile 22 ändern, bzw. wo muss ich diese (mit den Parametern für die Zeilen und Spalten) definieren, dass nur eine Tabelle generiert wird?

Java:
public class UrsprTabelle
{
    TabelleMitZweiSpalten tabZweiSpalten = new TabelleMitZweiSpalten();
    ....
    for(...)
    {
        tabZweiSpalten.neueTabelle(zeileInhaltInSpalte1, zeileInhaltInSpalte2);
    }

}

public class TabelleMitZweiSpalten
{
    private DefaultTableModel model;
	private JTable table;
     
        public void neueTabelle(String zeileInhaltInSpalte1, String zeileInhaltInSpalte2)
        {
            String[][] zeilen = {{zeileInhaltInSpalte1,zeilenInhaltInSpalte2}};
            String[] spalten = {"Spalte1", "Spalte2"};
            
            model = new DefaultTableModel(zeilen , spalten );
            table = new JTable(model);
            
            JScrollPane scrollPane = new JScrollPane(table);
            
            JPanel mainPanel = new JPanel();
            JFrame frame = new JFrame("New Window");
            
            mainPanel.setLayout(new BorderLayout());
            frame.getContentPane().add(mainPanel);
            frame.pack();
            frame.setVisible(true);

         }
}
 

Michael...

Top Contributor
so ganz funkioniert das bei mir nicht. wo soll ich außerhalb der Methode "neueTabelle"
Java:
 model = new DefaultTableModel(...............);
definieren, wenn ich nicht die Zeilen- und Spaltenwerte habe?
Die Werte braucht man auch nicht, da man einem DefaultTableModel nachträglich Zeilen und Spalten hinzufügen kann. Wobei irgendwann ja man definiert werden muss, wieviele Spalten die Tabelle hat.
 
D

derErnesto

Gast
Vielen Dank für die Hilfe...Mein Fehler war das ich die Methode
Java:
tabZweiSpalten.neueTabelle(zeileInhaltInSpalte1, zeileInhaltInSpalte2);
in der for-schleife aufgerufen habe. Demnach wurden so viele Tabellen erstellt, wie oft die for-schleife durchlaufen wurde.
Ich habe den Aufruf an einer anderen Stelle gemacht. Somit funktioniert das jetzt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Zwei String Array in eine Spalte einfügen AWT, Swing, JavaFX & SWT 1
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
raeuchertofu Input bei zwei jTextfields AWT, Swing, JavaFX & SWT 5
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
G 2D-Grafik Grafik in zwei verschiedenen Fenstern gleichzeitig zeichnen AWT, Swing, JavaFX & SWT 9
I JTable, DefaultTableModel, zwei Zahlen multiplizieren. AWT, Swing, JavaFX & SWT 26
P Zwei JTables auf eine A4-Seite mit einstellbaren Rändern AWT, Swing, JavaFX & SWT 9
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
Z Swing Kann man denn abstand zwischen zwei Buttons berechnen AWT, Swing, JavaFX & SWT 5
M Kommunikation zwischen zwei Stages AWT, Swing, JavaFX & SWT 0
Bluedaishi JavaFX Programm start mit zwei scenen bzw Fenster AWT, Swing, JavaFX & SWT 1
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
L Wörter zwischen zwei Grenzen einlesen. AWT, Swing, JavaFX & SWT 13
T Java: Zwei abhängige JSlider machen nicht das, was sie sollen AWT, Swing, JavaFX & SWT 4
D Zwei getrennte Java Klassen verbinden. Wie ? AWT, Swing, JavaFX & SWT 2
M Zwei JPanel übereinander nur vorderes "repainten" AWT, Swing, JavaFX & SWT 3
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
H Kombination von zwei Frames AWT, Swing, JavaFX & SWT 16
M Schnittpunkte zwischen zwei Graphics2D Elemente ermitteln. AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3
D Swing Kommunikation zwischen zwei GUI's AWT, Swing, JavaFX & SWT 2
S Zwei JTree, ein Model, bei Selection im ersten JTree soll der zweite die Inhlate anzeigen AWT, Swing, JavaFX & SWT 2
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
T CSS Rechtsbüdniges Label mit Zwei Zeilen AWT, Swing, JavaFX & SWT 7
P 2D-Grafik Bogen(Arc) zwischen zwei Punkten zeichnen AWT, Swing, JavaFX & SWT 2
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
Paul15 Zwei Fenster AWT, Swing, JavaFX & SWT 23
V JavaFX Zwei Dinge in einer CellFactory erledigen AWT, Swing, JavaFX & SWT 8
B Vertikale Größenänderung zwischen zwei Widgets AWT, Swing, JavaFX & SWT 2
J zwei Paint methoden in einer Klasse AWT, Swing, JavaFX & SWT 3
C Zwei Ebenen in Graphics ? AWT, Swing, JavaFX & SWT 0
I Zwei Fenster nebeneinander anzeigen AWT, Swing, JavaFX & SWT 2
A Swing Zwei Klassen mit Textfeld Eingaben vergleichen und Ausgabe erzeugen AWT, Swing, JavaFX & SWT 10
B Swing focusGained öffnet sich zwei mal AWT, Swing, JavaFX & SWT 3
C Bei Btn Klick zwei JPanels switchen AWT, Swing, JavaFX & SWT 14
A Swing zwei JComboBoxen miteinander vergleichen und anschließend Button umwandeln AWT, Swing, JavaFX & SWT 7
A Jtabbed ein Reiter mit zwei icons AWT, Swing, JavaFX & SWT 4
K Zugriff auf Label und Ereignisbehandlung durch zwei Handlerklassen AWT, Swing, JavaFX & SWT 3
J Zwei GUIs - Nach button-Klick soll ein Wert an die andere GUI übergeben werden AWT, Swing, JavaFX & SWT 15
B Kommunikation zwischen zwei Fenstern und vorübergehende Speicherung der Eingaben AWT, Swing, JavaFX & SWT 4
M Swing Warum öffnen sich beim Zeichnen mit Swing plötzlich zwei Fenster? AWT, Swing, JavaFX & SWT 5
B JApplet zwei Panels autobreite? AWT, Swing, JavaFX & SWT 2
T LayoutManager GridBagLayout - zwei jTable mit unterschiedlicher Höhe AWT, Swing, JavaFX & SWT 2
L Zeichnen in zwei Fenstern AWT, Swing, JavaFX & SWT 8
J JOptionPane mit zwei Buttons?! AWT, Swing, JavaFX & SWT 3
F Swing Ladebildschirm zwischen zwei SWING Frames AWT, Swing, JavaFX & SWT 11
T JTabbedPane - neuen Tab zwischen zwei anderen Tabs hinzufügen AWT, Swing, JavaFX & SWT 2
Helgon Zwei jTables gleich Breit AWT, Swing, JavaFX & SWT 4
C Zwei Bilder übereinander legen AWT, Swing, JavaFX & SWT 1
A Daten umherschieben zwischen zwei Klassen AWT, Swing, JavaFX & SWT 40
M Swing Zwei Jlists - selectedElement binden? AWT, Swing, JavaFX & SWT 7
K zwei TableModel AWT, Swing, JavaFX & SWT 9
J Schließen über x soll zwei Prozesse beenden AWT, Swing, JavaFX & SWT 7
F JPanel mit zwei Methoden her beschreiben. AWT, Swing, JavaFX & SWT 8
Y xormode bzw bild in zwei ebenen zeichnen AWT, Swing, JavaFX & SWT 4
G ein JTextArea in zwei JPanels AWT, Swing, JavaFX & SWT 2
G Wie erzeugt man zwei identische JPanel AWT, Swing, JavaFX & SWT 4
C zwei Bilder nacheinander anzeigen AWT, Swing, JavaFX & SWT 2
B LayoutManager Positionierung zwischen zwei Layoutkomponenten AWT, Swing, JavaFX & SWT 2
N Swing DnD zwischen zwei JTrees AWT, Swing, JavaFX & SWT 2
H Swing Zwei Fragen AWT, Swing, JavaFX & SWT 5
C Zwei JSpinner mit dem gleichen Wert AWT, Swing, JavaFX & SWT 2
T Zwei Jtables eine JscrollPane AWT, Swing, JavaFX & SWT 3
L Zwei Anwendungen kommen sich in die Quere! AWT, Swing, JavaFX & SWT 4
M SWT DND zwischen zwei TreViewern in beide Richtungen AWT, Swing, JavaFX & SWT 10
S SWT Zwei Tabellen gleichzeitig Scrollen AWT, Swing, JavaFX & SWT 3
N zwei JComponente gleichzeitig auf JPanel hinzufügen AWT, Swing, JavaFX & SWT 22
N Ein Button für zwei Aktionen AWT, Swing, JavaFX & SWT 7
V Swing Auslösen von zwei Events hintereinander AWT, Swing, JavaFX & SWT 4
hdi SWT Zwei mal Shell öffnen = Exception AWT, Swing, JavaFX & SWT 6
algorismi Unterscheiden zwischen zwei JLists AWT, Swing, JavaFX & SWT 5
P GridBagLayout - zwei Spalten mit gleicher Größe AWT, Swing, JavaFX & SWT 11
H Ein Button - zwei Actions AWT, Swing, JavaFX & SWT 3
T Schieberegler mit zwei Schiebern AWT, Swing, JavaFX & SWT 2
M SWT SWT - Zwei Tabellen gleicher Größe AWT, Swing, JavaFX & SWT 5
S import von Klassen (zwei Panels eine Form) AWT, Swing, JavaFX & SWT 39
K Zwei Panels zentriert anordnen AWT, Swing, JavaFX & SWT 3
S Vereinen von zwei MenuBar AWT, Swing, JavaFX & SWT 3
P JList mit zwei Werten AWT, Swing, JavaFX & SWT 9
0 JMenuItem nicht in zwei JMenus möglich? AWT, Swing, JavaFX & SWT 2
G Variblenwert zwischen zwei Klassen übergeben AWT, Swing, JavaFX & SWT 3
B zwei JLabels überlappen lassen AWT, Swing, JavaFX & SWT 5
T Kommunikation zwischen Zwei GUI-Klassen AWT, Swing, JavaFX & SWT 2
O Zwei Listener auf Komponente, warten auf Beendigun? AWT, Swing, JavaFX & SWT 2
T Kommunikation zwischen zwei jFrames AWT, Swing, JavaFX & SWT 4
G Datenaustausch zwischen zwei JFrames AWT, Swing, JavaFX & SWT 3
K Zwei JFrames aneinanderdocken? AWT, Swing, JavaFX & SWT 5
A Eins von zwei offnen Fenster/Frames schließen AWT, Swing, JavaFX & SWT 2
S JTable zwei Text-Zeilen in einer Zelle AWT, Swing, JavaFX & SWT 2
hdi zeitgleiches fokusieren von zwei panels AWT, Swing, JavaFX & SWT 2
I JTable: "GLEICHZEITIG" zwei verschiedene TableMode AWT, Swing, JavaFX & SWT 2
R JDialog dispose() wird zwei mal aufgerufen AWT, Swing, JavaFX & SWT 2
T zwei panel und ein thread AWT, Swing, JavaFX & SWT 5
W Instanz eines Steuerelementes an zwei Stellen zeichnen AWT, Swing, JavaFX & SWT 3
M Zwei JMenuBars AWT, Swing, JavaFX & SWT 5
W JTree - aus zwei mach eins AWT, Swing, JavaFX & SWT 2
M Zwei Element auf ein Contentpane AWT, Swing, JavaFX & SWT 45

Ähnliche Java Themen

Neue Themen


Oben