jTable anders darstellen

jothemac

Mitglied
Hallo,

ich möchte gerne daten aus einer mySQL-Datenbank in einer jTable darstellen. Dazu benutzte ich die methode die hier: http://www.java-forum.org/bilder-gu.../7035-jtable-teil-2-kommen-daten-tabelle.html an 2 Stelle gelistet ist.
Mein code dazu sieht so aus:
Java:
public class DetailDataView 
{
    static Stock stock = null;
    
    public  DetailDataView(Stock stock)
    {
        this.stock = stock;
    
        String query = "DATE, OPENING, HIGH, LOW, CLOSEING, VOLUME, ADJCLOSE,"
                    +"OPENCHANGEDAYBEFORENUMBER ," 
                    +"OPENCHANGEDAYBEFOREPERCENT ," 
                    +"HIGHCHANGEDAYBEFORENUMBER ," 
                    +"HIGHCHANGEDAYBEFOREPERCENT ," 
                    +"LOWCHANGEDAYBEFORENUMBER ," 
                    +"LOWCHANGEDAYBEFOREPERCENT ," 
                    +"CLOSECHANGEDAYBEFORENUMBER ," 
                    +"CLOSECHANGEDAYBEFOREPERCENT ," 
                    +"VOLUMECHANGEDAYBEFORENUMBER ,"
                    +"VOLUMECHANGEDAYBEFOREPERCENT ," 
                    +"ADJCLOSECHANGEDAYBEFORENUMBER ," 
                    +"ADJCLOSECHANGEDAYBEFOREPERCENT ";
        ResultSet  rs = this.stock.askForData(query);
                
        System.out.println("RESULT SET:"+rs);

        Vector data = new Vector();
                
        try 
        {
            Vector rowDate = new Vector(); Vector rowOpening = new Vector(); Vector rowHigh = new Vector();
            Vector rowLow = new Vector(); Vector rowVolume = new Vector();  Vector rowCloseing = new Vector();
            Vector rowAdjClose = new Vector(); Vector rowOpenCDN = new Vector(); Vector  rowOpenCDP = new Vector();
            Vector rowHighCDN = new Vector(); Vector rowHighCDP = new Vector(); Vector rowLowCDN = new Vector();
            Vector rowLowCDP = new Vector(); Vector rowCloseCDN = new Vector(); Vector rowCloseCDP = new Vector();
            Vector rowVolumeCDN = new Vector(); Vector rowVolumeCDP = new Vector(); Vector rowAdjCloseCDN = new Vector();
            Vector rowAdjCloseCDP = new Vector();
                    
            while(rs.next())
            {
                rowDate.add(rs.getString(1));
                rowOpening.add(rs.getString(2));
                rowHigh.add(rs.getString(3));
                rowLow.add(rs.getString(4));
                rowCloseing.add(rs.getString(5));
                rowVolume.add(rs.getString(6));
                rowAdjClose.add(rs.getString(7));
                rowOpenCDN.add(rs.getString(8));
                rowOpenCDP.add(rs.getString(9));
                rowHighCDN.add(rs.getString(10));
                rowHighCDP.add(rs.getString(11)); 
                rowLowCDN.add(rs.getString(12));
                rowLowCDP.add(rs.getString(13)); 
                rowCloseCDN.add(rs.getString(14)); 
                rowCloseCDP.add(rs.getString(15));
                rowVolumeCDN.add(rs.getString(16)); 
                rowVolumeCDP.add(rs.getString(17)); 
                rowAdjCloseCDN.add(rs.getString(18));
                rowAdjCloseCDP.add(rs.getString(19)); 
             }
                    
             data.add(rowDate);
             data.add(rowOpening);
             data.add(rowHigh);
             data.add(rowLow);
             data.add(rowVolume);
             data.add(rowAdjClose);
             data.add(rowOpenCDN);
             data.add(rowOpenCDP);
             data.add(rowHighCDN);
             data.add(rowHighCDP);
             data.add(rowLowCDN);
             data.add(rowLowCDP);
             data.add(rowCloseCDN);
             data.add(rowCloseCDP);
             data.add(rowVolumeCDN);
             data.add(rowVolumeCDP);
             data.add(rowAdjCloseCDN);
             data.add(rowAdjCloseCDP);
                    
             Vector title = new Vector();
             title.add("Date");
             title.add("Open");
             title.add("High");
             title.add("Low");
             title.add("Volume");
             title.add("AdjClose");
             title.add("OpenCDN");
             title.add("OpenCD%");
             title.add("HighCDN");
             title.add("HighCD%");
             title.add("LowCDN");
             title.add("LowCD%");
             title.add("CloseCDN");
             title.add("CloseCD%");
             title.add("VolumeCDN");
             title.add("VolumeCD%");
             title.add("AdjCloseCDN");
             title.add("AdjCloseCD%");



             
             JTable table = new JTable(data, title);
             JFrame frame = new JFrame("Data Viewer");
             frame.getContentPane().add(new JScrollPane(table));
             frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
             frame.pack();
             frame.setVisible(true);
                    
          } 
          catch (SQLException ex) 
          {
             Logger.getLogger(DetailDataView.class.getName()).log(Level.SEVERE, null, ex);
          }
    }   
}

Nun sieht die ausgegebene Tabelle aus aus, das die Daten in einer reihe eingefügt werden. Heisst alle Date ausgaben sind in reihe 1 nebeneinander, ich würde es aber gerne so haben, das alle Date daten untereinander sind, wie bekomme ich das hin? Und dann würde ich noch gerne wissen, wie ich das ganze scroll-bar machen.

Danke für jede Hilfe!
 
Java:
while (rs.next()) {
    Vector<String> cols = new Vector<String>();
    cols.add(rs.getString(1));
    //...
    cols.add(rs.getString(19));
    data.add(cols);
}
 
Zuletzt bearbeitet:
Willst du nicht erstmal den Code refaktorisieren?
Die ganzen Vectoren sind doch nicht wartbar.
Mach dir eine Klasse die deine ganzen Daten beinhaltet. Und die Objekte zeigst du dann in deiner Tabelle an.

Es sollte dann so aussehen
Java:
        while(rs.next())
            {
                MyObject myObject = new MyObject();
                myObject .setDate(rs.getString(1));
                myObject .setOpening(rs.getString(2));
               //usw.
               rows.add(myObject)
             }

Also alles ein bischen mehr objektorientierter...
 
Du machst das in der falschen Reihenfolge. Der Table will einen Vector aus Zeilen, und die Zeilen sind ein Vector der Einträge. Du packst das ganze aber in Vectoren aus Spalten.
Java:
Vector<Vector<Object>> data=new Vector<Vector<Object>>();
while(blabla)
{
Vector<Object> row=new Vector<Object>();
row.add(rs.get(x));
.....
data.add(row);
}
 

Neue Themen


Zurück
Oben