Objects, arrays usw.

Status
Nicht offen für weitere Antworten.

rogi1

Mitglied
hey Leute...
Ich wollte eine Tabelle in Java darstellen. Hab mir einen Code aus dem Internet gesucht und versucht ihn für meine Anwendung zu adaptieren...
folgender code:

param ist Ein String welcher eine smb.conf enthält.

Code:
String zw[] = param.split("\\[");
        Object[] erg = new Object[zw.length];
        for (int i=1;i<zw.length;i++)
        {
            erg[i-1] = (zw[i].split("\n\r"));
         }
müsste ja nun eigentlich ein 2 Dimensionales Object haben, welches ich JTable übergeben kann:
Code:
final JTable table = new JTable(data, columnNames);
bringt aber leider eine Fehlermeldung:

/test/src/EpiaServer.java:108: cannot resolve symbol
symbol : constructor JTable (java.lang.Object,java.lang.String[])
location: class javax.swing.JTable
final JTable table = new JTable(erg, columnNames);
1 error

Im debugger sieht dass aber gleich aus....

Weis da jemand rat??
Ich vermute dass ich das Object falsch zusammengestellt habe.
glg
Martin
 
Es waere interessant zu wissen, was "data" bei dir ueberhaupt ist. Wie baust du dir "data" zusammen?
 
> symbol : constructor JTable (java.lang.Object,java.lang.String[])
> final JTable table = new JTable(erg, columnNames);

ist mysteriös,
das scheint so als wenn der Compiler glaubt, dass der erste Parameter ein Object ist und kein Object[] so wie du es definiert hast,

sind das vielleicht zwei unterschiedliche erg-Variablen?

ungeachtet dessen reicht für die JTable auch ein Object[] nicht (wie in der API nachzulesen!)
es muss schon ein Object[][] sein,
das ist es in deinem Fall ja praktisch auch, da du in das erg-Object[] lauter String[] reintust,
also deklariere erg als Object[][], dann sollte es besser gehen

wobei immer noch fraglich ist wieso die Fehlermeldung von Object spricht obwohl Object[] deklariert ist,
da könnte sie genauso das Object[][] zum Object machen..

Code:
Object erg1 = null;
new JTable(erg1,new String[]{});
// Fehler bei mir: The constructor JTable(Object, String[]) is undefined	

Object[] erg2 = null;
new JTable(erg2,new String[]{});
// Fehler bei mir: The constructor JTable(Object[], String[]) is undefined	


Object[][] erg3 = null;
new JTable(erg3,new String[]{});
// alles in Ordnung
 
Die Übergabe für eine JTable sieht so aus:
JTable(Object[][] rowData, Object[] columnNames) und NICHT
JTable(Object[] rowData, Object[] columnNames)

Dein Object-Array ist aber als eindimensionales Object[] definiert. Da spielt es dann keine Rolle, dass die einzelnen Elemente wiederum Arrays sind.

Lösungsversuch:

Code:
        String zw[] = param.split("\\[");
        Object[][]  erg = new Object[zw.length];
        for (int i=0;i<zw.length;i++)
        {
            String[] tmp  = (zw[i].split("\n\r"));
            erg[i][0]       = tmp[0];
            erg[i][1]       = tmp[1];               
         }

Habs nicht getestet. Bitte selbst mal versuchen![/code]
 
man kann ein String[] durchaus als ein Object[] ansehen und direkt einfügen solange man nicht später noch andere Objekte verwendet

(es sei denn bei JTable gibts da Probleme, dann schreibe ich auch: bitte selber testen 😉
dann besser Object[][] erg = new Object[zw.length][2]; in der Varainte von HeyMan)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben