método pepinoso

7 respostas
Diana

tenho o seguinte método…que é disparado por um jbutton

EditorCelula rowEditor= new EditorCelula(jTable2);
					rowEditor.setEditorAt(linha-1, new DefaultCellEditor(listColab));
					jTable2.getColumn(modeloOC.getColumnName(5)).setCellEditor(rowEditor);

O problema é que cada vez que eu adiciono uma linha nova, o editor da primeira linha some…
o que eu faço para que cada vez que adicionar uma nova linha eu possa criar um novo objeto…sem matar o anterior???

[]'s

7 Respostas

danieldestro

É só usar o mesmo objeto do editor (rowEditor) ao invés de o criar a todo instante.

Diana

Daniel…

Estou com outro problema…
consegui criar um editor para cada linha…
mas em outro metodo eu preciso varrer a table e pegar os editores de cada linha…
mas o problema é que ele sempre me retorno o último…
pq acontece isso?

[]'s

danieldestro

Acho que os editores são por coluna e não por linha…
Preciso pesquisar.

Dê uma olhada na DOC da API.

Diana

sim, o editor é por coluna…mas estou usando uma classe editor…o qual eu posso setar linha-a-linha…e depois retornar o editor, segundo o método abaixo:

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

eu coloco o editor na célula do seguinte modo:

substituto=new JComboBox();
					
					Object obj[]=jList.getSelectedValues();
					int linha=jTable2.getRowCount();
					System.out.println("última linha da tabela"+linha);
					for(int i=0;i<obj.length;i++){
						substituto.addItem(obj[i]);
					}
					substituto.repaint();
					
					int row=jTable2.getRowCount();
					System.out.println("linha incluida"+row);
					editRow.setEditorAt(row-1, new DefaultCellEditor(substituto));
					
					jTable2.revalidate();
					jTable2.repaint();

[]'s

brlima

vc teria que ter em algum array os editores setados para cada linha, nao acha? No ColumnModel ele guarda o de cada coluna. VCc teria q ter o seu pra cada linha alem das colunas…

:wink:

Diana

“Diana”:
sim, o editor é por coluna…mas estou usando uma classe editor…o qual eu posso setar linha-a-linha…e depois retornar o editor, segundo o método abaixo:

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

na verdade eu tenho uma classe EditorCelula…e nessa classe eu tenho o método acima que na teoria deveria retornar o componente de acordo com a coluna e LINHA…mas na prática, só retorna o último.

segui a tua sugestão, mas acontece a mesma coisa…ele só retorno os valores do último editor…
segue código abaixo:

substituto=new JComboBox();
						
Object obj[]=jList.getSelectedValues();
int linha=jTable2.getRowCount(); //para adicionar sempre na última linha

for(int i=0;i<obj.length;i++){
substituto.addItem(obj[i]);
subst.add(obj[i]); //um arraylist para adicionar as mesmas opcoes que o combo está adicionando.
}
substituto.repaint();
int row=jTable2.getRowCount();
System.out.println("linha incluida"+row);
editRow.setEditorAt(row-1, new DefaultCellEditor(substituto));
arrayEditor.add(subst); //arraylist de editores adicionando um arraylist subst para cada linha da tabela.
					
//subst.clear();
					

jTable2.revalidate();
jTable2.repaint();

e mesmo assim ele ainda continua pegando só o último.
:frowning:

[]'s

Diana

Já consegui…
Obrigada pela atenção.

[]'s

Criado 9 de setembro de 2004
Ultima resposta 14 de set. de 2004
Respostas 7
Participantes 3