Jeg forstår ikke hvorfor du implementerer TableCellRenderer, når du extender DefaultTableCellRenderer. DefaultTableCellRenderer er en klasse og implementerer også TableCellRenderer. Prøv at fjerne den implements.
Ikke helt rigtig: Mit næste problem er nemlig, at jeg prøver dit forslag, dog med en comboBox. Og her kommer der bare en String frem hvor der står "Java.Swing..." Altså ingen comboBox. Men hvis jeg istedet returnere panel, så kommer boxen frem. Men så kan jeg ikke aligne boxen. Så hvis du har et svar på denne, så opretter jeg gerne et ? hvor du bare kan svare, og få point.
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) { Vector series = (Vector)value; if(series.size() > 1){ JPanel panel = new JPanel(); panel.setBackground(Color.WHITE); JComboBox test = new JComboBox(series); test.setPreferredSize(new Dimension(70,15)); panel.add(test); component = (JPanel)panel; setValue(panel); return (Component)this; } Serie serie = (Serie)series.elementAt(0); setHorizontalAlignment(LEFT); setVerticalAlignment(TOP); setValue(serie.getSerieName()); return this; }
For hvis det er fordi du "bare" vil fylde flere data i din combobox, holder du bare på instansen af din combobox og fylder flere data i den - eller fjerner fra den.
Joh... Mht alignment skal du sætte layout og alignment på det panel du tilføjer din combobox til.
Men i og med at du ikke bruger rowIndex nogen steder, så kan jeg ikke se hvordan du vil få en combobox der er forskellig for hver række.
Så vidt jeg ved, så sætter man en cellrenderer for en hel kolonne ad gangen. Og det vil sige at du bliver nødt til at finde din combobox/indhold ud fra rowIndex, og kan derfor ikke smide den med i constructoren.
efter utallige forsøg, så virker den public Component getTableCellEditorComponent(JTable table, Object value,boolean boo, int i, int u){ Vector series = (Vector)value; if(series.size() > 1){ panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.setBackground(Color.WHITE); JComboBox comboBox = new JComboBox(series); comboBox.setPreferredSize(new Dimension(70,15)); panel.add( comboBox, BorderLayout.NORTH ); return panel; } Serie serie = (Serie)series.elementAt(0); setHorizontalAlignment(LEFT); setVerticalAlignment(TOP); setValue(serie.getSerieName()); return this; }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.