Probelm mit JLabel in einem Vektor

xloouch

Erfahrenes Mitglied
Hallo zusammen.

Hab ein kleines Problem mit JLabel in einem Vektor hier der Code:

PHP:
private JPanel idPanel 	= new JPanel();
private JLabel idLabel      = new JLabel();

idLabel.setText("ID");
idPanel.add(idLabel);

Vector columnNames = new Vector();

columnNames.add(idPanel);

Nun kommt aber diese Fehlermeldung in der JTable:

PHP:
java.swing.JPanel[,0,0,0x0,invalid,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]

Was soll ich damit anfangen? Oder kann mir jemand sagen, wie ich ein Panel in einen Vektor bringe..

Freundliche Grüsse und vielen Dank
 
hallo xloouch,

versuch es doch mal, indem du dem Vector vorgibst, was er speichern soll:

Code:
private JPanel idPanel     = new JPanel(); 
private JLabel idLabel      = new JLabel(); 

idLabel.setText("ID"); 
idPanel.add(idLabel); 

Vector<JPanel> columnNames = new Vector<JPanel>(); 

columnNames.add(idPanel);


LG
Andy
 
Kannst du mal den Code posten mit dem du das JPanel wieder aufrufen willst. Das ist keine Fehlermeldung, du gibst da das Objekt als String in der JTable aus.

Z. B, wenn du

Code:
System.out.println(idPanel)

machen würdest, würde die gleiche Ausgabe kommen.
 
Dies ist der PrintLN

PHP:
javax.swing.JPanel[,0,0,0x0,invalid,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]

PS andy72

Das mit den Generics hat nicht funktioniert
 
Ich weiß. Printl hat die gleiche Ausgabe. Du gibst das Objekt als String aus und das sieht dann so aus. Was willst du mit dem JPanel in der JTable machen?
Poste mal bitte die Stelle an der du das JPanel aus dem Vector liest.
Das speichern im Vector ist eigentlich richtig so wie du das gemacht hast.
 
Der Vektor wird in einer eigenen Klasse erstellt und wird so eingelesen:

PHP:
 Vector columnNames = columns.getColumnNames("alle");

danach wird das ganze in eine JTable geschoben

PHP:
JTable table = new JTable( rowData, columnNames);
 
Jetzt bin ich total verwirrt :-D Verstehe gerade gar nicht was du machen willst.

Was willst du genau tun? Bzw warum willst du ein JPanel in einem Vector speichern und dann das JPanel im einer JTable anzeigen. Meines Wissens funktioniert, das auch gar nicht.
 
Man kann denke ich schon ein JPanel in einer Tablecell darstellen, das geht auch in einer JList, warum also nicht in einer JTable ? Die Frage ist im Endeffekt ja, wie man das ganze im CellRenderer auswertet bzw zur Darstellung bringt. meine Vermutung liegt hier, dass er versucht, aus einem JPanel einen String zu machen, also empfehle ich jetzt mal, einen eigens für DIESE Table eigenen TableCellRenderer zu implementieren.

...wobei ich nicht verstehe, warum die JPanels vorher in einem Vector gespeichert werden sollen *kopfkratz*
 
Was ich eigentlich will, ist dass ich die Tabellen Header mit dem Label auf eine fixe Grösse Stellen will. Darum habe ich gedacht, dass ich via eines JLabels und eines JPanels die Grösse vorgeben kann.

Das ist eigentlich die Grundidee dahinter..
 
achsooooo *aus'm Mußtopf guck ^^

Also, was Du dazu machen kannst ist, dass Du für deine Tabelle einen CellRenderer implementierst und diesen einen "extends JLabel" hinzufügst, und diesem Label dann eine feste Grösse vorgibst. wichtig ist dafür die Funktion "getCellRendererComponent", diese wird bei jeder Zelle einzeln aufgerufen:

Code:
public class myRenderer extends JLabel implements DefaultTableCellRenderer {
  public Component getTableCellRendererComponent(JTable table,
            Object value, boolean isSelected, boolean hasFocus, int row,
            int column)
  {
    setText((String)value);
    setPreferredSize(new Dimension(100, 20));
  }
}
 
Zurück