JTable mit unterschiedlichen Typen in derselben Spalte?

  • Hi! Hab ne Frage bezüglich JTables...
    Hab da einen JTable, der besteht aus 2 Spalten und nun möchte ich dass in der Spalte2 verschiedene Datentypen drinstehen können. Beispiel:

    Spalte1 | Spalte2
    -----------------
    Name: | Objektname // String
    Pos X: | 50 // int
    Pos Y: | 10 // int
    Enable: | [x] // in dieser Zeile eine Checkbox im Sinne von True/False
    Color: | *Button* // hier ein JButton der einen COlorchooser öffnet

    Meine bisherige Lösung sieht so aus, dass ich statt einem JTable ein paar JTextFields nehme und dort alles als String auslese bzw. parse. Den Button für den ColorChooser hab ich extra, ebenso wie die Checkbox;

    Jedoch denk ich mal dass ein JTable schöner aussehen würde :zwinker:
    Auf den Java Tutorials über JTables hab ich lediglich gefunden, wie man einen DatenTyp für die gesamte Spalte bestimmt, nicht jedoch wenn mehrere Datentypen in dieser Spalte vorhanden sein sollen. Geht das überhaupt?

    hab da so ein JTable mal zusammengeschustert :shinner:, doch offenbar weiss der Table nicht wie er den Button und die CheckBox behandeln soll und liefert lediglich einen String... Hat jemand ne Ahnung wie man das hinbiegen könnte?

  • hi,

    schau dir die Funktionen getCellRenderer und getCellEditor von der JTable an.
    da bekommst du die Spalte und Ziele mit übergeben - anhand derer musst halt entscheiden welchen Renderer/Editor du anzeigst.

    Du kannst ja in deinem Tablemodel eine Funktion getCellClass definieren, die du in den oben genannten Funktionen verwendest.

    mfg seHaas

  • Bei Verwendung eines TableModels musst du eine Methode implementieren, die für die jeweilige Zelle den Typ zurückgibt. Gibst du dort den Typ boolean zurück, entsteht automatisch eine CheckBox, ohne dass du selbst einen Renderer schreiben musst.

    There's no better place than 127.0.0.1!

  • Bei Verwendung eines TableModels musst du eine Methode implementieren, die für die jeweilige Zelle den Typ zurückgibt.


    Welche Methode meinst du? getColumnClass geht nur auf Spaltenebene.

    Gibst du dort den Typ boolean zurück, entsteht automatisch eine CheckBox, ohne dass du selbst einen Renderer schreiben musst.


    Den Renderer musst in der Regel eh nicht selber schreiben, nur du musst halt die Zuordnung selber machen.

    mfg seHaas

  • Welche Methode meinst du? getColumnClass geht nur auf Spaltenebene.

    Ja, stimmt, das geht doch nicht, da hatte ich wohl etwas falsch in Erinnerung, sorry für die Verwirrung.


    Den Renderer musst in der Regel eh nicht selber schreiben, nur du musst halt die Zuordnung selber machen.

    Sicher muss man ihn selbst schreiben, aber das tut jetzt nichts zur Sache.

    mfg.

    There's no better place than 127.0.0.1!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!