Como passar um valor que não está sendo visível no JTable?

2 respostas
Pedrosa

Boa tarde, estou populando um JTable atraves de um modelo, de que maneira eu consigo passar um campo invisível na grid algo parecido como um hidden na web?

public JTable createJTable() {
dados = new ArrayList();
// monta as colunas de titulo do JTable
colunas = new String[] { "desc1", "desc2", "dec3", "desc4", "desc5" };

//carrega a grid 
for (LoteDTO lote : lotes) {
	dados.add(new String[] {lote.getTipoLote(),
	String.valueOf(lote.getIdLoteImpressao()),
	String.valueOf(lote.getPrioridadeLote()),
	lote.getStatusLote(),lote.getData()});
}

Onde eu tenho o tipo preciso pegar o código do tipo, como adaptar a esse caso?

Para não ter que fazer essa gambiarra, onde concateno o código junto com a descrição e separo por split:

String acao = getTable().getModel().getValueAt(linha,0).toString();
String[] tipoDoc = acao.split("-");
Integer.parseInt(tipoDoc[0]);

2 Respostas

Pedrosa

Alguém sabe me dizer como faço isso acima?

mister_m

Olá Pedrosa,

Basta que você trabalhe com seu modelo de objetos ao invés de somente ficar usando um ArrayList<String[]>. Você pode fazer isso implementando seu próprio TableModel na mão ou utilizando o genesis, um framework open-source brasileiro com documentação em português que simplifica o desenvolvimento desktop. Por exemplo, no caso citado, você poderia fazer assim:

@Form
public class LoteForm {
   private final List&lt;LoteDTO&gt; lotes;
   private LoteDTO lote;

   public LoteForm(final List&lt;LoteDTO&gt; lotes) {
      this.lotes = lotes;
   }

   @DataProvider(widgetName="nameTabelaLotes", objectField="lote")
   public List&lt;LoteDTO&gt; populaLotes() {
       return lotes;
   }

   public ListDTO getLote() {
       return lote;
   }

   public void setLote(LoteDTO lote) {
       this.lote = lote;
   }
}

Para mais informações, consulte a documentação de @DataProvider.

Criado 15 de junho de 2007
Ultima resposta 18 de jun. de 2007
Respostas 2
Participantes 2