Formatar uma jTable.  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
Luiz_Gustavo
Virtual Machine Man
[Avatar]

Membro desde: 30/04/2005 12:55:11
Mensagens: 518
Localização: Assis
Offline

ops... disfarça...

faz isso:



rsmd.getColumnCount() já te devolve 2 (que é o índice para a terceira coluna).
Só será necessário o "+1" lá no início mesmo, para ele adicionar 3 colunas na linha.
Agora deve funcionar, tenta aí...

[]'s

Analista e Desenvolvedor de Sistemas
http://luizgustavoss.blogspot.com/
http://luizgustavoss.wordpress.com/
http://www.linkedin.com/in/luizgustavoss
Procurando uma especialização em Java, SOA e Android? Conheça a TNT Educacional

[Email] [WWW]
petter
Virtual Machine Man

Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline

Valeu mesmo, o problema de selecionar a coluna pelo boolean fico funcionando redondo.

Foi só controlar o fluxo da ordem de impressão usando um Thread.sleep() que tudo ficou show de bola. Valeu mesmo.

Qualquer coisa estamos aí!

-----------------------------------------
Java is the future
-----------------------------------------
[WWW]
Luiz_Gustavo
Virtual Machine Man
[Avatar]

Membro desde: 30/04/2005 12:55:11
Mensagens: 518
Localização: Assis
Offline

petter wrote:Valeu mesmo, o problema de selecionar a coluna pelo boolean fico funcionando redondo.


Ótimo!

petter wrote:O que tá matando agora é que na função imprimir imprime só a primeira linha, se eu selecionar várias não imprime as outras.

Lá vamos nós de novo. Eita coisa que tá dando trabalho.


VAmos lá!!!

Faça um teste, antes de chamar o método imprimir, para ver quantos registros existem em seus Lists, que são passados para alimentar o método.

Poste o código do seu método imprimir (a parte relevante).

[]'s

Analista e Desenvolvedor de Sistemas
http://luizgustavoss.blogspot.com/
http://luizgustavoss.wordpress.com/
http://www.linkedin.com/in/luizgustavoss
Procurando uma especialização em Java, SOA e Android? Conheça a TNT Educacional

[Email] [WWW]
petter
Virtual Machine Man

Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline

Ops. Editei o meu outro post, vi que o problema de impressão era uma limitação do meu hardware (impressora) que precisa de um "tempo" antes de receber outra requisição de impressão.

Valeu!

-----------------------------------------
Java is the future
-----------------------------------------
[WWW]
Luiz_Gustavo
Virtual Machine Man
[Avatar]

Membro desde: 30/04/2005 12:55:11
Mensagens: 518
Localização: Assis
Offline

petter wrote:Ops. Editei o meu outro post, vi que o problema de impressão era uma limitação do meu hardware (impressora) que precisa de um "tempo" antes de receber outra requisição de impressão.

Valeu!


Maravilha!!!
Que bom que tudo deu certo!

Precisando pode entrar em contato. Qqr coisa tb entro em contato.

[]'s

Analista e Desenvolvedor de Sistemas
http://luizgustavoss.blogspot.com/
http://luizgustavoss.wordpress.com/
http://www.linkedin.com/in/luizgustavoss
Procurando uma especialização em Java, SOA e Android? Conheça a TNT Educacional

[Email] [WWW]
petter
Virtual Machine Man

Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline

Cara o resultado foi tão bom que agora preciso usar a mesma classe em outra app só que preciso implementar um outro processo, além das 3 colunas preciso gerar um quarta coluna com campo int que é carregado todos com 0, o porém é que clicar no jcheckBox o campo int deve ter o seu valor alterado automaticamente. Tem como capturar esse click, tentei montar algo como no click de um jButton mas não vingou. O caminho é esse mesmo?

-----------------------------------------
Java is the future
-----------------------------------------
[WWW]
Luiz_Gustavo
Virtual Machine Man
[Avatar]

Membro desde: 30/04/2005 12:55:11
Mensagens: 518
Localização: Assis
Offline

Antes de começarmos, deixa eu te fazer uma pergunta (que você pode até pensar que não tem nada a ver, mas enfim, é uma curiosidade):

- Qual valor o int deve receber quando você clica no JCheckBox?

Agora outras dúvidas mais intimamente relacionadas à questão:

- Quando o JCheckBox está selecionado o int fica com o tal valor, e quando não está o int volta a zero? (Imagine a situação da pessoa marcando e desmarcando o JCheckBox).


bom... adicione um ListSelectionListener à sua JTable. Não exatamente à JTable, mas ao ListSelectionModel dela... algo como:



Você vai ver, consultando a API da interface ListSelectionListener, que ela tem o método valueChanged(ListSelectionEvent evt)

implemente ele mais ou menos assim:




[]'s

Analista e Desenvolvedor de Sistemas
http://luizgustavoss.blogspot.com/
http://luizgustavoss.wordpress.com/
http://www.linkedin.com/in/luizgustavoss
Procurando uma especialização em Java, SOA e Android? Conheça a TNT Educacional

[Email] [WWW]
petter
Virtual Machine Man

Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline

Eu estava testando as minhas alterações, e acho que tá dando o erro em uma parte. O erro é esse:


Seguindo a sua lógica para alimentar campos que não vem do select:


É isso mesmo ou estou fazendo alguma barbaridade?

-----------------------------------------
Java is the future
-----------------------------------------
[WWW]
Luiz_Gustavo
Virtual Machine Man
[Avatar]

Membro desde: 30/04/2005 12:55:11
Mensagens: 518
Localização: Assis
Offline

se ainda está como no caso anterior, em que vêm duas do banco, é assim:



[]'s

Analista e Desenvolvedor de Sistemas
http://luizgustavoss.blogspot.com/
http://luizgustavoss.wordpress.com/
http://www.linkedin.com/in/luizgustavoss
Procurando uma especialização em Java, SOA e Android? Conheça a TNT Educacional

[Email] [WWW]
petter
Virtual Machine Man

Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline

Valeu cara, agora tá funcionanado legal.

-----------------------------------------
Java is the future
-----------------------------------------
[WWW]
Luiz_Gustavo
Virtual Machine Man
[Avatar]

Membro desde: 30/04/2005 12:55:11
Mensagens: 518
Localização: Assis
Offline

petter wrote:Valeu cara, agora tá funcionanado legal.



Analista e Desenvolvedor de Sistemas
http://luizgustavoss.blogspot.com/
http://luizgustavoss.wordpress.com/
http://www.linkedin.com/in/luizgustavoss
Procurando uma especialização em Java, SOA e Android? Conheça a TNT Educacional

[Email] [WWW]
petter
Virtual Machine Man

Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline

Editado: Tá tudo funcionando 100%.

-----------------------------------------
Java is the future
-----------------------------------------
[WWW]
CRCJ
Thread.start()

Membro desde: 22/08/2011 16:06:06
Mensagens: 34
Offline

Grande
Tenho uma jTable que consegui imprimi-la direto na impressora, mas gostaria de ter um cabeçalho em cada pagina, e configurar 20 linhas por pagina. Pode me ajudar. Segue código quando abro a Tabela, e quando imprimo.

[code]

package Relatorio;

import java.awt.event.ActionListener;
import java.awt.print.PrinterException;
import java.sql.SQLException;
import java.text.MessageFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.* ;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import utilitarios.conexao;
import javax.swing.text.MaskFormatter;

public class RelaContas extends javax.swing.JFrame
{

private static class jTable {

public jTable() {
}
}


MaskFormatter formatodatacada;
private MaskFormatter formatodata;
private MaskFormatter formatocep;
private MaskFormatter formatocnpj;
private MaskFormatter formatoie;
private MaskFormatter formatoccm;
private MaskFormatter formatoddi;
private MaskFormatter formatotelefone;


//COMANDA PRIMEIRO, PROXIMO, ANTERIOR, ULTIMO
int navega = 0 ;

//ORDENA PELO CÓDIGO
String ordenacao ="codigo";

//ORDENA PELA DATA DE VENCIMENTO
String ordenacao1 ="datavencimento";
String novo = "n";

conexao contas;
private ActionListener ActionListener;

public RelaContas()
{
initComponents();
contas = new conexao();
contas.conecta();
contas.executeSQL("select * from Contas order by "+ordenacao1);
try
{
contas.executeSQL("select * from Contas order by posicaoconta");
preencher_jtable();
contas.executeSQL("select * from Contas order by codigo");
contas.resultset.last();
mostrardados();

}
catch(SQLException erro)
{
JOptionPane.showMessageDialog(null,"BANCO DE DADOS NÃO ENCONTRADO, VERIFIQUE O ERRO");
}
}
public void mostrardados()
{
//try
{
//MOSTRA DATA NO FORMULÁRIO
Date data = new Date();
String dia = "" + data.getDate();
String mes = "" + String.valueOf(data.getMonth()+1);
String ano = "" + (1900 + data.getYear());
if (Integer.parseInt(dia)<=9)
dia = "0" + dia;
if (Integer.parseInt(mes)<=9)
mes = "0" + mes;
datacada.setText(dia+"/"+mes+"/"+ano);
datacada.setEditable(false);

//MOSTRA HORA NO FORMULÁRIO
Date hora = new Date();
String thora ="" + data.getHours();
String tminuto=""+ data.getMinutes();
String tsegundo=""+ data.getSeconds();
if (Integer.parseInt(tminuto)<=9)
tminuto = "0" + tminuto;
if (Integer.parseInt(tsegundo)<=9)
tsegundo = "0" + tsegundo;
horacada.setText(thora+":"+tminuto+":"+tsegundo);
horacada.setEditable(false);

//DESABILITA O X NO FORMULÁRIO
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

}
}

public void preencher_jtable()
{
DefaultTableCellRenderer esquerda = new DefaultTableCellRenderer();
DefaultTableCellRenderer centro = new DefaultTableCellRenderer();
DefaultTableCellRenderer direita = new DefaultTableCellRenderer();

esquerda.setHorizontalAlignment(SwingConstants.LEFT);
centro.setHorizontalAlignment(SwingConstants.CENTER);
direita.setHorizontalAlignment(SwingConstants.RIGHT);

//CODIGO
jTable.getColumnModel().getColumn(0).setCellRenderer(centro);
//DATAVENCIMENTO
jTable.getColumnModel().getColumn(1).setCellRenderer(centro);
//FORNECEDOR
jTable.getColumnModel().getColumn(2).setCellRenderer(esquerda);
//VALOR
jTable.getColumnModel().getColumn(3).setCellRenderer(direita);
//PISIÇÃO CONTA
jTable.getColumnModel().getColumn(4).setCellRenderer(esquerda);
//CODIGO DE BARRAS
jTable.getColumnModel().getColumn(5).setCellRenderer(esquerda);


//CODIGO
jTable.getColumnModel().getColumn(0).setPreferredWidth(10);
//DATA VENCIMENTO
jTable.getColumnModel().getColumn(1).setPreferredWidth(15);
//FORNECEDOR
jTable.getColumnModel().getColumn(2).setPreferredWidth(200);
//VALOR
jTable.getColumnModel().getColumn(3).setPreferredWidth(30);
//POSIÇÃO CONTA
jTable.getColumnModel().getColumn(4).setPreferredWidth(20);
//CODIGO DE BARRAS
jTable.getColumnModel().getColumn(5).setPreferredWidth(220);

DefaultTableModel modelo = (DefaultTableModel)jTable.getModel();
modelo.setNumRows(0);
try
{
while(contas.resultset.next())
{
modelo.addRow(new Object[]
{
contas.resultset.getString("codigo"),
contas.resultset.getString("datavencimento"),
contas.resultset.getString("fornecedor"),
contas.resultset.getString("valor"),
contas.resultset.getString("posicaoconta"),
contas.resultset.getString("codigobarras"),
}
);
}
}
catch(SQLException erro)
{
}
}

private void btsairActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//if(javax.swing.JOptionPane.showConfirmDialog(null,"DESEJA FECHAR ESTE FORMULÁRIO ?","SAIR",javax.swing.JOptionPane.YES_NO_OPTION )==0)
//this.dispose();
//new Cadastro.CadastroDeContas().show();
Object[] options =
{
"Sim", "Não"
};
int i = JOptionPane.showOptionDialog(null,
"DESEJA FECHAR ESTE FORMULÁRIO ?","SAIR",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
options, options[0]);
if (i == JOptionPane.YES_OPTION)
{
//System.exit(0);
this.dispose();
new Cadastro.CadastroDeContas().show();
}
}

private void btimprimirActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
{
try
{
jTable.print();
}
catch (PrinterException ex)
{
Logger.getLogger(RelaContas.class.getName()).log(Level.SEVERE, null, ex);
}
}
DefaultTableModel modelo = (DefaultTableModel)jTable.getModel();
modelo.setNumRows(0);
try
{
while(contas.resultset.next())
{
modelo.addRow(new Object[]
{
contas.resultset.getString("codigo"),
contas.resultset.getString("datavencimento"),
contas.resultset.getString("fornecedor"),
contas.resultset.getString("valor"),
contas.resultset.getString("posicaoconta"),
contas.resultset.getString("codigobarras"),
}
);
}
}
catch(SQLException erro)
{
}
this.dispose();
new Relatorio.RelaContas().show();
}







Gustavo Zub
What is classpath?

Membro desde: 15/11/2011 22:20:07
Mensagens: 6
Offline

Luiz_Gustavo wrote:Nesse trecho:
se você sabe a quantidade certa de colunas (rsmd.getColumnCount() te dá a quantidade de colunas), e a ordem em que elas serão apresentadas, você pode montar um array manualmente e passar para o model de sua tabela:


Eu preciso saber como faço para não permitir que o usuário altere a ordem das colunas. Alguém aí faz ideia de como se faz isso?
Gustavo Zub
What is classpath?

Membro desde: 15/11/2011 22:20:07
Mensagens: 6
Offline

Gustavo Zub wrote:
Luiz_Gustavo wrote:Nesse trecho:
se você sabe a quantidade certa de colunas (rsmd.getColumnCount() te dá a quantidade de colunas), e a ordem em que elas serão apresentadas, você pode montar um array manualmente e passar para o model de sua tabela:


Eu preciso saber como faço para não permitir que o usuário altere a ordem das colunas. Alguém aí faz ideia de como se faz isso?


Opa, já descobri...

 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team