|
-
February 6th, 2009, 05:58 AM
#1
Table cell editor not working
Hello there,
I am new to Java programming,
I am trying to create a check box in a table cell which the user should able manipulate when the JTable is showing, the renderer is working fine but the editor is not , the overriden method getTableCellEditorComponent never gets a call, getTableCellRendererComponent does get a call and renderer works fine.
any ideas whats wrong here ?? or what could be wrong which makes getTableCellEditorComponent not get called ?
my renderere and editor code is like this
package com.itrsgroup.swing.componentmanager.dockablemanager;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.EventObject;
import javax.swing.AbstractCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
/**
* A cell renderer and a cell editor for rendering and editing the filters active state.
*
*/
public class ActiveCheckBoxRendererEditor extends AbstractCellEditor
implements TableCellEditor, TableCellRenderer, ItemListener
{
private Font font = new Font("Verdana", Font.BOLD, 11 );
private JCheckBox editor = new JCheckBox("Inactive");
private JCheckBox renderer = new JCheckBox("Inactive");
private String strSelectedText;
private String strNotSelectedText;
private Color colourActive = new Color(51,153,51);
private Color colourInActive = Color.RED;
/** Constructor. */
public ActiveCheckBoxRendererEditor()
{
this( "Selected", "Not Selected" );
}
/**
* Constructor.
* @param strSelText - the text to render when selected.
* @param strNotSelText - the text to render when not selected.
*/
public ActiveCheckBoxRendererEditor(String strSelText, String strNotSelText)
{
strSelectedText = strSelText;
strNotSelectedText = strNotSelText;
renderer = new JCheckBox( strNotSelectedText );
renderer.setHorizontalTextPosition( SwingConstants.CENTER );
renderer.setVerticalTextPosition( SwingConstants.TOP);
renderer.setHorizontalAlignment( SwingConstants.CENTER );
renderer.setVerticalAlignment( SwingConstants.CENTER );
renderer.setFont( font );
editor = new JCheckBox( strNotSelectedText );
editor.setBackground( UIManager.getColor("Table.selectionBackground") );
editor.setHorizontalTextPosition( SwingConstants.CENTER );
editor.setVerticalTextPosition( SwingConstants.TOP );
editor.setHorizontalAlignment( SwingConstants.CENTER );
editor.setVerticalAlignment( SwingConstants.CENTER );
editor.setFont( font );
editor.addItemListener( this );
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
{
return editor;
}
@Override
public boolean isCellEditable(EventObject arg0)
{
// TODO Auto-generated method stub
return true;
}
@Override
public Object getCellEditorValue()
{
return editor.isSelected();
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
Boolean bool = (Boolean) value;
renderer.setSelected( bool );
renderer.setText( bool ? strSelectedText : strNotSelectedText);
renderer.setForeground( bool ? colourActive : colourInActive );
if( isSelected )
renderer.setBackground( table.getSelectionBackground() );
else
renderer.setBackground( table.getBackground() );
return renderer;
}
@Override
public void itemStateChanged(ItemEvent e)
{
boolean isSelected = e.getStateChange() == ItemEvent.SELECTED;
editor.setText( isSelected ? strSelectedText : strNotSelectedText);
stopCellEditing();
}
}
and this is how I install it on my JTable
ActiveCheckBoxRendererEditor cbc = new ActiveCheckBoxRendererEditor("Active", "Inactive");
TableColumn
activeColumn = this.getColumnModel().getColumn( 3 );
activeColumn.setCellEditor( cbc);
activeColumn.setCellRenderer( cbc );
activeColumn.setPreferredWidth( 80 );
activeColumn.setMaxWidth( 200 );
activeColumn.setMinWidth( 80 );
thanks
Ahmed
He is not strong and powerful, who throws people down, but he is strong who withholds himself from anger
MyWeb
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|