String[] array in vertikale Spalte einer JTable ausgeben?

  • Themenstarter Themenstarter A$gard
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
A

A$gard

Gast
Hallo,

ich habe bisher nur Beispiele gefunden, wie string arrays horizontal sprich von links nach rechts in eine Zeile einer JTable eingelesen werden, wie z.B.

von der java insel:

Code:
String[][] rowData = { 
     { "Japan", "245" }, { "USA", "240" }, { "Italien", "220" }, 
     { "Spanien", "217" }, {"Türkei", "215"} ,{ "England", "214" }, 
     { "Frankreich", "190" }, {"Griechenland", "185" }, 
     { "Deutschland", "180" }, {"Portugal", "170" } 
    };


Angenommen ich habe 2 String arrays die mit daten gefüllt sind wie einmal Personennamen und Alter im anderen STring array.

Wie kann ich mit java nun diese beiden arrays in je 1 Spalte vertikal runter einlesen so dass in der linken Spalte alle Namen stehen und rechts das alter dazu steht ? In der JTAble FAQ hierzu im forum habe ich nix gefunden dazu.
 
es wäre unnötig kompliziert, die JTable dafür anzupassen,
ändere du dein Array um, dann gehts
 
SlaterB hat gesagt.:
es wäre unnötig kompliziert, die JTable dafür anzupassen,
ändere du dein Array um, dann gehts

d.h. ich muss meine daten in ein array angepasst füllen sprich wie hier:

String[][] rowData = {
{ "Renate", "38" }, { "Peter", "24" }, { "Biggy", "19" },

};

ok das heißt ich muss mich erst mit 2-dimensionalen Arrays auseinander setzen wie ich die werte richtig in das array schreibe.
:bae: danke dir!
 
FRage noch vorweg,

kann ich daten aus einem array dynamisch in eine JTable denn einlesen? die faq hat nur ein statisches beispiel...
 
das Model der JTable auf DefaultTableModel casten, und da gibts dann paar passende Operationen,

aber funktioniert evtl nur, wenn man einen Vector statt Array im Konstruktor verwendet
 
Warum wird mir nur eine leere graue JTable fläche angezeigt ?

muss ich die spalten und reihen extra adden?


Code:
import javax.swing.*;

public class SettingsPanel extends JPanel
{
	static final long serialVersionUID = 1L;
    
    
	private JButton saveBT = new JButton("<html>[b]Save Settings[/b]</html>");
   
    static JTextField DirDefaultTF = new JTextField();
    JTable table;
    JScrollPane pane = new JScrollPane(table);
    
    String[][] data = new String[][]{
            {"a", "b", "c", "d"},
            {"e", "f", "g", "h"},
            {"i", "j", "k", "l"}
      };
      
      // Die Column-Titles
      String[] title = new String[]{
            "A", "B", "C", "D"
      }; 

    public SettingsPanel()
    {   	   	
        setLayout(null);   
        add(saveBT);
        add(pane);
        saveBT.setBounds(15, 430, 150, 60);
        pane.setBounds(15,20,300,400);
        table = new JTable (data,title);                        
    }   
}
 
mach einfach mal ein komplettes Programm draus (mit JFrame + main)
dann kann man das ausführen und den Fehler nennen,
nicht mühsam alle Ursachen durchraten..
 
Deine Tabelle wird gar nicht angezeigt. :bae:
Siehe Kommentare im Code

Bad one
Code:
public class SettingsPanel extends JPanel 
{ 
    ...
    JTable table; 
    JScrollPane pane = new JScrollPane(table);  // zu diesem Zeitpunkt ist table noch null!
    
    public SettingsPanel() 
    {             
        ...
        table = new JTable (data,title);  // zu spät instanziiert
    }    
}

Ein halbwegs good one 😉
Code:
import javax.swing.*; 

public class SettingsPanel extends JPanel 
{ 
   static final long serialVersionUID = 1L; 
    
   private JButton saveBT = new JButton("<html>[b]Save Settings[/b]</html>"); 
    
    static JTextField DirDefaultTF = new JTextField(); 
    JTable table; 
    JScrollPane pane; 
    
    String[][] data = new String[][]{ 
            {"a", "b", "c", "d"}, 
            {"e", "f", "g", "h"}, 
            {"i", "j", "k", "l"} 
      }; 
      
      // Die Column-Titles 
      String[] title = new String[]{ 
            "A", "B", "C", "D" 
      }; 

    public SettingsPanel() 
    {             
        setLayout(null);    
        saveBT.setBounds(15, 430, 150, 60); 
        table = new JTable (data,title);  // Tabelle                      
        pane = new JScrollPane(table);  // und erst dann JScrollPane
        pane.setBounds(15,20,300,400); 
        add(saveBT); 
        add(pane); 
    }    
}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben