Como retirar o Foco de um JTextField que esta dentro de uma Celula de JTable

0 respostas
Stingray

esta acontecendo o seguinte...

quando clico na celula que tem o JTextArea no JTable, ele nao sai do modo de edição ate eu dar ESC, mesmo se eu selecionar outra celula ele nao sai...

como e que faz para ele voltar ao modo normal ? nao estou conseguindo.

segue codigo do renderer e do Editor.

package TableModel;

import java.awt.Component;


import javax.swing.*;

import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;
import java.awt.Color;

public class JTableMultiLineSupport extends AbstractCellEditor implements TableCellEditor, TableCellRenderer
{
	  JTextArea editor = new JTextArea(4, 10);
	  JScrollPane jsp = new JScrollPane(editor);
	  JTable table;
	  int row;
	  int col;
	  JTextArea renderer = new JTextArea(4, 10);
	 
	  //Fazer o MultiLine Perder o foco ao sair do clique...
	  
	  public Component getTableCellEditorComponent(JTable table,Object value,
	                                       boolean isSelected,int row,int col)
	   {
	      
		 this.table = table;
	     this.row = row;
	     this.col = col;
		 editor.setDisabledTextColor(Color.black);
		 editor.setEnabled(false);

	     jsp.setVerticalScrollBarPolicy(jsp.VERTICAL_SCROLLBAR_NEVER);
	     	if (value == null)
	     	{
	    	 	editor.setText("");
	     	}
	     	else
	     	{
	     		editor.setText(value.toString());
	     	}
	     	return jsp;
	  }
	  public Component getTableCellRendererComponent(JTable table,Object value,
	         boolean isSelected,boolean hasFocus,int row,int column)
	  {
	    renderer.setText(value == null ? "" : value.toString());
	    return renderer;
	  }
	  public Object getCellEditorValue()
	  {
	    return editor.getText();
	  }
	  public boolean stopCellEditing()
	  {
	    table.getModel().setValueAt(editor.getText(), row, col);
	    return true;
	  }
	}
Criado 15 de agosto de 2007
Respostas 0
Participantes 1