It's not a secret anymore!*
The moose likes Swing / AWT / SWT and the fly likes Adding a column of JRadioButtons to a JTable Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "Adding a column of JRadioButtons to a JTable" Watch "Adding a column of JRadioButtons to a JTable" New topic
Author

Adding a column of JRadioButtons to a JTable

guy madura
Greenhorn

Joined: Oct 19, 2004
Posts: 6
Hi everybody,

I need to add a column to JTable ( column of JRadioButtons).I had added through a customise renderer which implements default renderer.But the problem is the other columns works fine by having alternative color for each row except radio button column.Moreover the listener is not getting fired for radio button and also I have used customise editor which implements default cell editor.Can any one clear my doubt.
Thanks in advance.
Arun
Rachel Swailes
Ranch Hand

Joined: May 18, 2004
Posts: 434
To have the alternative color in your new column, you must specify in your Radio Button CellRenderer that the background color needs to be whatever it needs to be.

Then for the mouse listener, have you added a mouse listener to each cell in that column in the renderer?

Can you post the code for your Renderer and Editor.

Cheers,
Rachel
guy madura
Greenhorn

Joined: Oct 19, 2004
Posts: 6
The color change happens for all the rows and columns except the radiobutton column.I have added the code to editor and renderer.Moreover In editor getTableCellEditorComponent doesnt got executed.what should I do.
Any suggestions

Arun
Rachel Swailes
Ranch Hand

Joined: May 18, 2004
Posts: 434
Sometimes you have to set the component's background to opaque(true) that the renderer returns. But I can't really make any good guesses without the code.

Cheers,
rachel
guy madura
Greenhorn

Joined: Oct 19, 2004
Posts: 6
Here is the code for editor

class RadioButtonEditor extends DefaultCellEditor implements ItemListener {

public RadioButtonEditor(JCheckBox checkBox) {
super(checkBox);
ButtonGroup group = new ButtonGroup();
for (int row = 0;row < model.getRowCount();row++){
JRadioButton radio = (JRadioButton)model.getValueAt(row,0);
group.add(radio);
}

}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {

if (value==null) return null;
button = (JRadioButton)value;
button.addItemListener(this);
return (Component)value;

if (row%2 == 0) {
setBackground(Color.white);
}
else {
setBackground(new Color(220,220,220));
}
setForeground(Color.black);
if (isSelected) {

//selectedBorder is a solid border in the color
//table.getSelectionBackground().
setBackground(FXAppletUtil.LIGHT_BACKGROUND);
}


return (Component)value;


}

public Object getCellEditorValue() {
button.removeItemListener(this);
return button;
}

public void itemStateChanged(ItemEvent e) {
super.fireEditingStopped();

}
}

Any suggestions
Rachel Swailes
Ranch Hand

Joined: May 18, 2004
Posts: 434
Hi there

First - lets work on getting the color right and then we'll work on getting the events to fire for you.

In the getTableCellEditorComponent() before you return the component, call setOpaque(true) on it. This should make the background's color show up.

Then, about the listener, why are you using ItemListener?

Try and let me know, Cheers,
Rachel
jyothi ve
Ranch Hand

Joined: Aug 03, 2001
Posts: 51
Please find below code to add Radio buttons as one of the JTable's column

jTable1.getColumn("Primary Role").setCellRenderer(new RadioButtonRenderer()); - Registering renderer to the column
jTable1.getColumn("Primary Role").setCellEditor(new RadioButtonEditor(new JCheckBox()) - Registering editor to the column


Below code for Renderer and Editor

class RadioButtonRenderer implements TableCellRenderer {
public JRadioButton btn = new JRadioButton();

public Component getTableCellRendererComponent(JTable table, Object
value,boolean isSelected, boolean hasFocus, int row, int column) {
if (value==null) return null;

if(((Boolean)value).booleanValue())
btn.setSelected(true);
else
btn.setSelected(false);

if (isSelected) {
btn.setForeground(table.getSelectionForeground());
btn.setBackground(table.getSelectionBackground());
} else {
btn.setForeground(table.getForeground());
btn.setBackground(table.getBackground());
}
return btn;
}
}

class RadioButtonEditor extends DefaultCellEditor
implements ItemListener {
public JRadioButton btn = new JRadioButton();

public RadioButtonEditor(JCheckBox checkBox) {
super(checkBox);
}

public Component getTableCellEditorComponent(JTable table, Object
value, boolean isSelected, int row, int column) {

if (value==null) return null;
btn.addItemListener(this);
if ( ( (Boolean) value).booleanValue())
btn.setSelected(true);
else
btn.setSelected(false);

return btn;
}

public Object getCellEditorValue() {
if(btn.isSelected() == true)
return new Boolean(true);
else
return new Boolean(false);
}

public void itemStateChanged(ItemEvent e) {
super.fireEditingStopped();
}
}

[ November 05, 2004: Message edited by: jyothi ve ]
[ November 05, 2004: Message edited by: jyothi ve ]

Jyothi<br /> <br />Sun Certified Business Component Developer<br />Sun Certified Web Component Developer<br />Sun Certified Java Programmer<br />Oracle Certified SQL & PL-SQL Programmer
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Adding a column of JRadioButtons to a JTable
 
Similar Threads
jtable
unable to insert JRadio in JTable.
JTable
Need help with RadioButtons in JTable
JTable ........