Problema para imprimir a partir do jTable

8 respostas
P

Pessoal tenho uma jTable alimentada a partir de um select, funciona blz.
Tenho um método para imprimir em uma impressora de código de barras, funciona blz se eu alimentar de forma “manual” as variáveis (strings) com o conteúdo a ser impresso.

Contudo se eu ao clique de um botão tentar pegar o conteúdo de uma linha da jTable para alimentar meu método de impressão dá a seguinte execption:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1

Alguém sabe o que dispara essa execption? Já procurei e testei de formas diferentes mas nada deu certo, sempre dispara essa execption.

Olha o código do meu botão:

private void jButtonImprimirActionPerformed(java.awt.event.ActionEvent evt) {                                                
            Imprimir iEtiqueta = new Imprimir();
            
            Object LinhaO1 = Grade.getValueAt(Grade.getEditingRow(), 0);
            Linha1 = LinhaO1.toString();
            Object LinhaO2 = Grade.getValueAt(Grade.getEditingRow(), 1);
            Linha2 = LinhaO2.toString();
            
            iEtiqueta.main(Linha1, Linha2);
    }

8 Respostas

maquiavelbona

Bom dia!

Tente mudar o seu código ao inves de pegar a linha que esta sendo editada(método getEditingRow() de JTable) para a que está selecionada(método getSelectedRow() de JTable), como mostra exemplo abaixo:

private void jButtonImprimirActionPerformed(java.awt.event.ActionEvent evt) {                                                
             Imprimir iEtiqueta = new Imprimir();
             
             Object LinhaO1 = Grade.getValueAt(Grade.getSelectedRow(), 0);
             Linha1 = LinhaO1.toString();
             Object LinhaO2 = Grade.getValueAt(Grade.getSelectedRow(), 1);
             Linha2 = LinhaO2.toString();
             
             iEtiqueta.main(Linha1, Linha2);
     }

Se nenhuma linha da JTable estiver sendo editada, ele retorna -1, como mostra na documentação, vide link: http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JTable.html#getEditingRow()

Espero ter ajudado. Até!

H

essa excecao eh qnd se informa 1 indice fora da capacidade de 1 array, q deve ser o q esta acontecendo pq getEditingRow() deve ta retornando -1 pq n tem nd editando, como o cara acima falou, ponha getSelectedRow() e selecione a linha q provavelmente ira pegar.

R

ola, petter sera que vc pode mais detalhes da sua classe de impressao de jtable?
queria saber como faco pra mandar ela pra impressora.

T+

P

O que exatamente vc quer saber? É sobre a minha rotina de impressão? Ou é a forma de como selecionar as linhas e fazer um get no seu conteudo? Ou é ambos? :lol:

Se eu for descrever tudo vai dar um belo livro. :lol: :lol: :lol:

R

o que eu preciso é sobre como mandar pra impressora a jtable com o resultado da minha consulta. E tambem , se vc souber, como faco pra pegar o dado de uma deteerminada coluna que foi clicada pelo usuario.
vlw… T++

P

Cara estou mandando a minha classe Main que forma a tela usando Swing, faz um select no banco busca duas colunas com valores e os outros valores eu jogo como defult nas outras 3 colunas do jTable (essas 3 colunas é que serão editáveis pelo usuário).

Em seguida dentro do botão imprimir tenho um laço for que checa quantas linhas da jTable foi selecionada (estão com o boolean true da 3ª coluna) e dentro tenho outro laço for que checa quantas vezes a mesma linha será impressa (com isso eu posso imprimir o conteudo da linha 1 3 vezes e da linha 2 apenas 1 vez).

Na classe ImprimirArgox eu recebo os valores da classe Main e tenho a rotina que manda para a impressora na porta LPT1 as imformações codificadas em PPLA (linguagem que o meu impressor de código de barras aceita).

Dá uma olhada nos códigos, qualquer coisa é só postar.

R

cara, valew pelo arquivo, mas me manda o .java o .class nao serve ne?

T+

P

Cara pode abrir sussu, eu é que coloquei a extensão errada, se vc abrir no bloco de notas ou similar vai ver todo o código lá.

Criado 30 de junho de 2006
Ultima resposta 14 de jul. de 2006
Respostas 8
Participantes 4