Creating a CustomRenderer with JComboBox for enums

M

malpropio

I was reading the post about the customrenderer using JCombobox to
represent an enum. I have a similar problem which is ,I need to build
a table that takes enums and display JCombobox so my customRenderer
wont be for one particular enum but for enums in general, do you have
any idea how that could be done ?
 
M

Manish Pandit

I was reading the post about the customrenderer using JCombobox to
represent an enum. I have a similar problem which is ,I need to build
a table that takes enums and display JCombobox so my customRenderer
wont be for one particular enum but for enums in general, do you have
any idea how that could be done ?

If you're refering to JDK 1.5 Enums, then you can use values() to get
an array of values held in that enum and populate the list.

Tutorial: http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html

-cheers,
Manish
 
M

malpropio

I was able to use the values() method to get the element of the enum
but now I have another problem, the ComBox does not drop down when I
click on it to select an element other than the default selected one
and I implement the getTableVellRendererComponent but the value I'm
getting are always null for some reason here is the renderer's code:




public class EnumRenderer<V extends Enum<V>> extends JComboBox
implements TableCellRenderer {


Class<V> valueType;

public EnumRenderer() {
// TODO Auto-generated constructor stub
}

public EnumRenderer(ComboBoxModel arg0) {
super(arg0);
// TODO Auto-generated constructor stub
}

public EnumRenderer(Object[] arg0) {
super(arg0);
// TODO Auto-generated constructor stub
}

public EnumRenderer(Vector<?> arg0) {
super(arg0);
// TODO Auto-generated constructor stub
}

public EnumRenderer( Class valueType ){
super(valueType.getEnumConstants());
this.setEnabled(true);
}


@Override
public Component getTableCellRendererComponent(JTable table, Object
value,
boolean isSelected, boolean hasFocus, int row, int column) {
// TODO Auto-generated method stub

System.out.println(value);

/*
if(arg1 != null ){

System.out.println(arg1);

Class<V> valueType = ((Enum)arg1).getDeclaringClass();

for(V v : valueType.getEnumConstants()){
addItem(v);
}
}
*/
return this;
}

}
 
M

malpropio

Found the problem I was using the wrong element. If you're trying to
use a combobox to change the value of a field you should use a custom
CellEditor extending a JComboBox instead of the CustomCellRender
because that will not let you edit/change the value of the cell via
the combobox.
 
S

Sebastian Millies

Am Thu, 16 Aug 2007 21:12:10 -0000 schrieb malpropio:
Found the problem I was using the wrong element. If you're trying to
use a combobox to change the value of a field you should use a custom
CellEditor extending a JComboBox instead of the CustomCellRender
because that will not let you edit/change the value of the cell via
the combobox.

Hi, could you post your working example code? In any case, that would
help me a lot, not having much experience with Swing.
-- Thank you, Sebastian
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,816
Latest member
SapanaCarpetStudio

Latest Threads

Top