tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1193
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    himbeer himbeer ist offline Grünschnabel
    Registriert seit
    Jan 2005
    Beiträge
    4
    Hallo!

    Ich habe mehrere Forenbeiträge über Renderer durchgelesen und habe auch schon Erfolg damit gehabt. Nur ein Problem:
    Ich möchte in einer JTable in einer Zelle eine JComboBox darstellen, nur jedoch werden mehrere Werte in der ComboBox nicht dargestellt werden - nur der jeweils erste Wert (im Beispiel: "1. Wert"):

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    
    import java.awt.Component;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.table.DefaultTableCellRenderer;
    public class JTableDemo extends JFrame {
    private JTable table;
    public JTableDemo() {
    super("JTableDemo");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    String[] header = { "ABC", "DEF", "GHI" };
    String[][] data = { { "1A", "1B", "1C" }, {
        "2A", "2B", "2C" }, {
        "3A", "3B", "3C" }
    };
    table = new JTable(data, header);
    final JComboBox combo = new JComboBox();
    DefaultTableCellRenderer renderer = new DefaultTableCellRenderer() {
    public Component getTableCellRendererComponent(
        JTable table,
        Object value,
        boolean isSelected,
        boolean hasFocus,
        int row,
        int column) {
        String val = (String) value;
        if (isSelected) {
         if (val.startsWith("2") && val.endsWith("B")) {
             combo.addItem("1.Wert");
             combo.addItem("2.Wert");
             combo.addItem("3.Wert");
         return combo;
         } else {
         return new JTextField(val);
         }
        } else {
         return new JLabel(val);
        }
    }
    };
    table.getColumn("DEF").setCellRenderer(renderer);
    getContentPane().add(table);
    pack();
    setVisible(true);
    }
    public static void main(String[] args) {
    new JTableDemo();
    }
    }
    Danke für Eure Hilfe!
    Gruß
     

  2. #2
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Tach,
    ich denke, für Deine Zwecke ist der Editor anzupassen, nicht der Renderer...
     

  3. #3
    himbeer himbeer ist offline Grünschnabel
    Registriert seit
    Jan 2005
    Beiträge
    4
    Äh, ich weiß im Moment nicht was ich machen soll,

    kannst Du mir ein vielleicht ein Beispielcode geben?

    Danke!
     

  4. #4
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Sorry, keine Zeit für Beispielcode.
    Du musst für die entsprechende Spalte einen eigenen CellRenderer zuweisen. Näheres dazu in der API, evtl. in den Sun Tutorials, aber bestimmt bei dem Codeguru Link, den ich in der Linkliste genannt habe. Darin ist übrigens einiges Interessantes zu Tabellen zu finden!
     

Ähnliche Themen

  1. JComboBox in JTable
    Von RalU im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 22.12.09, 16:52
  2. JComboBox-Zeilen in JTable
    Von KPMAnakha im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 02.11.09, 14:44
  3. JComboBox in JTable: Verhalten bei editieren
    Von mas666 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 16.04.09, 10:45
  4. JTable mit JComboBox und Listener, wie funktionieren sie?
    Von HaGs im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 6
    Letzter Beitrag: 11.07.07, 22:20
  5. JComboBox in JTable mit permanent sichtbarem Pfeil
    Von wernerrechert im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 27.07.04, 17:03