I am trying to highlight the text of a jtable cell. This is my code: when i am getting the editor for specified cell in testingHighlighter method and trying to highlight the text in that editor component. please help me where i am wrong.
public class test extends JFrame
{
DefaultTableModel model;
JTable table;
String col[] = {"Name","Address","Phone","test"};
public static void main(String args[])
{
test t = new test();
t.start();
t.testingHightligher();
}
public void start()
{
model = new DefaultTableModel(col,2);
table=new JTable(model){@Override
public boolean isCellEditable(int arg0, int arg1) {
return true;
}};
JScrollPane pane = new JScrollPane(table);
setColumnEditor( table.getColumnModel().getColumn( 0 ), new Object[] { "AND",
"OR" }, "Logical Operator" );
Object[] objs = new Object[] { "==", "=" };
setColumnEditor( table.getColumnModel().getColumn( 2 ), objs, "Logical Operator");
JTextField field = new JTextField();
DefaultCellEditor editor = new DefaultCellEditor( field );
editor.setClickCountToStart( 1 );
TableColumn col = table.getColumnModel().getColumn( 3 );
col.setCellEditor( editor );
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setToolTipText( "click to edit" );
col.setCellRenderer( renderer );
table.getColumnModel().getColumn( 0 ).setPreferredWidth( 25 );
table.getColumnModel().getColumn( 1 ).setPreferredWidth( 120 );
table.getColumnModel().getColumn( 2 ).setPreferredWidth( 25 );
table.getColumnModel().getColumn( 3 ).setPreferredWidth( 100 );
table.getTableHeader().setReorderingAllowed( false );
table.setValueAt("csanuragjain",0,3);
add(pane);
setVisible(true);
setSize(500,400);
setLayout(new FlowLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private void setColumnEditor( TableColumn col, Object[] editValues, String renderTip )
{
JComboBox comboBox = null;
if( editValues != null )
{
comboBox = new JComboBox( editValues );
}
else
{
comboBox = new JComboBox();
}
comboBox.setMaximumRowCount( 6 );
DefaultCellEditor editor = new DefaultCellEditor( comboBox );
editor.setClickCountToStart( 2 );
col.setCellEditor( editor );
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setToolTipText( renderTip );
col.setCellRenderer( renderer );
TableCellRenderer headerRenderer = col.getHeaderRenderer();
if( headerRenderer instanceof DefaultTableCellRenderer )
{
( (DefaultTableCellRenderer) headerRenderer ).setToolTipText( "test" );
}
}
void testingHightligher()
{
Object value = table.getValueAt(0, 3);
JTextField field = (JTextField) table.getColumnModel().getColumn( 3 ).getCellEditor().getTableCellEditorComponent(table, value, true, 0, 3);
try
{
field.getHighlighter().addHighlight(0, 3, new javax.swing.text.DefaultHighlighter.DefaultHighlightPainter( Color.RED ));
}
catch(BadLocationException ex)
{
ex.printStackTrace();
}
}
}
Please help me where i am wrong..
See Question&Answers more detail:os