JComboBox in JTable

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
Morgen,

ich hab in einer Spalte einer JTable eine JComboBox.class und frag mich gerade ob es möglich ist, dass in der ersten Zeile in der JComboBox gewisse Items drinnen sind, in der zweiten Zeile der JComboBox andere Items u.s.w.
oder müssen in allen JComboBoxen die gleichen Items drinnenstehen?



Code:
public class Main {

    public Main() {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JTable table = new JTable();
        DefaultTableModel model = (DefaultTableModel)table.getModel();
        model.addColumn("A", new Object[]{"item1"});
        model.addColumn("B", new Object[]{"item2"});
        model.addRow(new Object[]{"item2"});
        String[] values = new String[]{"item1", "item2", "item3"};
        int vColIndex = 0;
        TableColumn col = table.getColumnModel().getColumn(vColIndex);
        col.setCellEditor(new ComboBoxEditor(values));
        col.setCellRenderer(new ComboBoxRenderer(values));
        f.add(table);
        f.setBounds(10, 10, 700, 500);
        f.setVisible(true);
        }

    public static void main(String[] args) {
        new Main();
        }

   class ComboBoxRenderer extends JComboBox implements TableCellRenderer {
        public ComboBoxRenderer(String[] items) {
            super(items);
        }

        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            if (isSelected) {
                setForeground(table.getSelectionForeground());
                super.setBackground(table.getSelectionBackground());
            } else {
                setForeground(table.getForeground());
                setBackground(table.getBackground());
            }            
            setSelectedItem(value);
            return this;
        }
    }

   class ComboBoxEditor extends DefaultCellEditor {
        public ComboBoxEditor(String[] items) {
            super(new JComboBox(items));
        }
    }
}
 
S

SlaterB

Gast
entweder du hast mehrere JComboBoxen und gibts bei

public Component getTableCellRendererComponent(..) {
..
return this;
}

nicht this zurück, sondern eine der JComboBoxen abhängig von der Zeile

oder es bleibt so wie bisher und du setzt innerhalb von getTableCellRendererComponent() jedes Mal die passenden Werte/ das passende Model für die immer gleiche JComboBox

setSelectedItem(value); rufst du bereits auf, genausogut kannst du alle Items neu setzen abhängig von der Zeilennummer
 

Generic1

Top Contributor
hallo,

ich hab jetzt den TableCellRenderer auskommentiert, funktioniert aber genauso, der TableCellRenderer trägt also zum Verhalten nichts bei, jetzt ist mir nicht ganz klar, warum das so ist?
 
S

SlaterB

Gast
ok, Renderer vs Editor, der Renderer stellt wohl nur die Zelle ohne Editierung dar, da ist mehr als der aktuelle Wert vielleicht nicht enscheidend,

um den Editor gehts natürlich, hatte nicht so genau geschaut,
da ist es im Grunde das gleiche Spiel, wenn auch dank der Basisklasse zunächst weniger zu sehen ist,

eine Methode der Basisklasse ist
Code:
//  Implementing the CellEditor Interface
//
    /** Implements the <code>TableCellEditor</code> interface. */
    public Component getTableCellEditorComponent(JTable table, Object value,
                         boolean isSelected,
                         int row, int column) {
        delegate.setValue(value);
    return editorComponent;
    }
da sieht man, wie die JComboBox auch wieder nur letztlich der Rückgabewert irgendeiner Methode ist,
könnte also abhängig von der Zeilennummer verschiedene Objekte sein

aber da hier das delegate dazu kommt und bisschen Arbeit im Konstruktor,
würde es wohl eher schwieriger sein, das mehrfach zu definieren,

versuche also die andere Variante: ändere innerhalb von getTableCellEditorComponent() die Items der JComboBox bzw. dessen Models,
falls du das nicht kennst, dann besser erstmal in einer normalen JComboBox testen,
z.B. auf Buttonklick alle Elemente austauschen
 

Generic1

Top Contributor
Ich hab schnell mal ausprobiert, wenn ich bei gewissen ZEILEN der JTable nicht möchte, das die JComboBox erscheint, dass ich einfach null zurückgebe.
Das funktioniert so lange, wie ich in den Zeilen herumklicke, wo die JComboBox nicht erscheinen soll.

wenn ich in einer Zeile, wo die JComboBox erlaubt ist, etwas mit dieser einstelle und dann auf eine Zeile klicke, wo die JComboBox nicht erscheinen soll, dann erscheint diese trotzdem einmal. bei weiteren herumklicken auf Zeilen, wo de JComboBox nicht erscheinen soll, erscheint diese dann auch nicht mehr.
Keine Ahnung warum, was duzu jemand was,
Besten Dank,

Code:
@Override
   public Component getTableCellEditorComponent(final JTable table, final Object value, final boolean isSelected, final int row, final int column) {               
       if(something)
           return null;
       else {
           delegate.setValue(value);
           System.out.println("else: " + mainTree.getSelectionPath());
           return editorComponent;
            }
        }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JComboBox XYZ uses unchecked or unsafe operations Allgemeine Java-Themen 1
FrittenFritze Problem mit einer JComboBox, Event temporär deaktivieren Allgemeine Java-Themen 11
P Variablen Auf durch for-Schleife generierte JComboBox zugreifen Allgemeine Java-Themen 3
S Unchecked cast from Component to JComboBox<String> Allgemeine Java-Themen 3
Luk10 Frage zu JComboBox und GridLayout Allgemeine Java-Themen 3
C Swing JComboBox - Problem mit der Darstellung des Inhaltes Allgemeine Java-Themen 9
I jComboBox itemlänge Allgemeine Java-Themen 7
G JComboBox getSelectedItem Zeit Allgemeine Java-Themen 5
D Locale mit JCombobox umschalten Allgemeine Java-Themen 19
E JComboBox Allgemeine Java-Themen 3
V JComboBox und Wertevergleich. Allgemeine Java-Themen 2
D JComboBox - SelectedIndex Allgemeine Java-Themen 6
P JComboBox Array unterscheiden Allgemeine Java-Themen 3
E JComboBox und JTextFeld mischen Allgemeine Java-Themen 2
T JComboBox simulieren Allgemeine Java-Themen 9
C JCombobox ImageIcon & Text Allgemeine Java-Themen 2
G JComboBox mit aufklappbarem JPanel? Allgemeine Java-Themen 13
G JComboBox mit Werten aus einer Access Datenbank füllen Allgemeine Java-Themen 18
B JComboBox-Eintrag ohne Enter aktualisieren Allgemeine Java-Themen 2
C Serialisierung von JComboBox Allgemeine Java-Themen 4
KeTho1712 Java Swing: JTable standardmäßig füllen, sodass bei Start bereits Datensätze gespeichert sind Allgemeine Java-Themen 1
H Swing JTextArea als TableCellRenderer in JTable - wie Zeilen selektieren? Allgemeine Java-Themen 47
D JTable mit JTextAreas in den Zellen Allgemeine Java-Themen 8
X Swing JTable zeigt nichts Allgemeine Java-Themen 4
G jTable aktualisieren?! Allgemeine Java-Themen 1
S JTable - mehrere ausgewählte Rows in ArrayList Allgemeine Java-Themen 5
A Fehler beim Aktualisieren JTable Allgemeine Java-Themen 1
D falsche Zeile aus JTable in MySQL gelöscht Allgemeine Java-Themen 6
offi Drag and Drop mehrerer File aus Explorer in JTable Allgemeine Java-Themen 1
V JTable Externe Lib Allgemeine Java-Themen 2
F JTable Pfeiltasten-Verhalten Allgemeine Java-Themen 1
T jTable Gestaffelte Überschriften Allgemeine Java-Themen 22
Paul15 2D Arraylist in Jtable Allgemeine Java-Themen 1
R jTable, nur Werte zwischen 2 Double values ausgeben Allgemeine Java-Themen 3
B Klassen JTable mit einer Liste Allgemeine Java-Themen 0
A JTable Bilder Allgemeine Java-Themen 1
F JTable mit Zellen die sich durch andere Eingaben füllen Allgemeine Java-Themen 1
A JTable - CellRange auslesen Allgemeine Java-Themen 2
A jTable Renderer Allgemeine Java-Themen 5
N JTable filtern Allgemeine Java-Themen 3
hdi JTable#print & Druckgröße Allgemeine Java-Themen 6
S JTable: Model durch ein anderes ersetzen Allgemeine Java-Themen 2
G JTable: ListSelectionListener removen Allgemeine Java-Themen 8
M JTable + ArrayList Allgemeine Java-Themen 3
G Aktualisierung einer JTable erfolgt nicht zuverlässig Allgemeine Java-Themen 14
E Hintergrund einer JTable änden Allgemeine Java-Themen 2
G Darstellung von Ergebnissen einer Dokumentensuche über eine JTable Allgemeine Java-Themen 19
Iron Monkey Inhalt von JTable in die Textdatei mit StringWidth schreiben Allgemeine Java-Themen 3
P jTable getSelectedRow? Allgemeine Java-Themen 2
B JTable eigene Daten Add Methode Allgemeine Java-Themen 2
B LEERE JTable MouseListener + popupmenu Allgemeine Java-Themen 2
X xml aus Zip in JTable Allgemeine Java-Themen 2
L jTable drag & drop einzelner Zeilen Allgemeine Java-Themen 4
S JTable und Spalten löschen Frage Allgemeine Java-Themen 5
H JTable per iText in PDF: Größenanpassung möglich? Allgemeine Java-Themen 2
F XML zu JTable mit JDOM Allgemeine Java-Themen 2
E JTable wird nicht angezeigt Allgemeine Java-Themen 11
Screen ImageIcon in Cell der JTable Allgemeine Java-Themen 2
G JTable mit Keylistener geht nicht Allgemeine Java-Themen 3
C Swing JTable Vector aus DB adden Allgemeine Java-Themen 3
A Swing JTable Polymorphismus Allgemeine Java-Themen 2
trash super + JTable Allgemeine Java-Themen 7
D JTable -> 1Spalte nur zahlen Allgemeine Java-Themen 2
L JTABLE setvalueat methode! Allgemeine Java-Themen 16
C Swing Daten zwischen JTable teilen Allgemeine Java-Themen 6
hdi JTable: Sortierung von Date-Objekten Allgemeine Java-Themen 4
B JTable nach Icon sortieren Allgemeine Java-Themen 6
N Exception beim auslesen einer JTable Allgemeine Java-Themen 5
M jdesktop binding: jTable update nach Änderung... Allgemeine Java-Themen 3
D JTable mit GROUP BY Allgemeine Java-Themen 23
martin82 Regex - JTable - Filter Allgemeine Java-Themen 10
X JTable mit Checkboxen -> Setzen (true/false) der Checkboxen per Mouseklick... Allgemeine Java-Themen 3
P JTable drucken Allgemeine Java-Themen 8
A JTable Feldwerte in JTextFelder mit blättern Allgemeine Java-Themen 5
DStrohma [Erledigt] Wieso kann ich Taste 'ENTER' in JTable nicht belegen? Allgemeine Java-Themen 2
M jTable Allgemeine Java-Themen 19
D jTable und TableModel Allgemeine Java-Themen 2
B Exception bei leerem JTable verhindern Allgemeine Java-Themen 10
A Observable BeansBinding an einer JTable bzw. JXTable Allgemeine Java-Themen 3
P Textfile -> Array -> JTable Allgemeine Java-Themen 9
S JTable Aktuelisieren ber Wie ? Allgemeine Java-Themen 4
J Ergebnismenge eines SQL-Queries in JTable anzeigen Allgemeine Java-Themen 3
MQue JTable alles rechts Allgemeine Java-Themen 8
G Checkboxen abfragen,Auswahl sichern, JTable laden Allgemeine Java-Themen 2
G Hibernate, JTable und Performance Allgemeine Java-Themen 17
R JTable und Cell Renderer Allgemeine Java-Themen 3
M JTable: Anzahl Zeichen bei Eingabe Allgemeine Java-Themen 2
S Welche Speicherung von Daten bei Kalendarfunktion der jtable Allgemeine Java-Themen 7
J keylistener auf jtable Allgemeine Java-Themen 19
C JTable, Abstand zwischen Zellen Allgemeine Java-Themen 2
G Eindeutiges Identifizieren einer JTable/Component z.laufzeit Allgemeine Java-Themen 2
D JTable -> ArrayIndexOutOfBoundsException bei Mausklick Allgemeine Java-Themen 2
S JTable editieren + in JTextField schreiben Allgemeine Java-Themen 7
G Daten in / für JTable beim Scrollen nachladen? Allgemeine Java-Themen 5
M JTable verändert Position auf meinem JPanel Allgemeine Java-Themen 3
P JTable Allgemeine Java-Themen 2
H JTable Löschen [Alle Zeilen aufeinmal Löschen] Allgemeine Java-Themen 6
P JTable setDataVector Allgemeine Java-Themen 2
D Scrollbalken in meiner JTable auf einmal weg. Allgemeine Java-Themen 2
P JTable Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben