Ola
Estou fazendo um sistema de contas pagar e receber, em uma JTable tenho um JCombo [Pagar, Paga, Receber, Recebida ] e 2 JTextField, sendo um data inicial e outro data final. Consigo filtrar na JTable tanto o Jcombo como qualquer JText mas só que individual. O que ocorre é o seguinte. Por ex quero que filtre na combo [ PAGAR ], na 1ª JText - data inicial [ dd/mm/aaaa ] e na 2ª Jtext - data final [ dd/mm/aaa ] e assim me mostre filtrado na JTable o que eu escolhi na Combo e o que digitei nas duas JText. Alguem ai pode me ajudar
Trabalhando com filtros em uma JTable
7 Respostas
Use o TableFilter do projeto Towel:
Ele é muito parecido com o recurso de “auto-filtro” do Excel.
Use o TableFilter do projeto Towel:
Ele é muito parecido com o recurso de “auto-filtro” do Excel.
Obrigado, mas não é isso que estou procurando, quero realmente usar um combo e duas jtextfield com data inicial e data final
Como vc tem feito o filtro hoje?
Seria algo parecido com isso?
http://www.java2s.com/Tutorial/Java/0240__Swing/FiltertablebythetextinaTextField.htm
Na Tela:
Tenho um: JComboBox [ cmbpesquisa ] - [pagar, paga, receber, recebida ]
JTextField [ txtdatainicial ] - [ dd/mm/aaaa ] - seria data inicial
JTextField [ txtdatafinal ] - [ dd/mm/aaa ] - seria data final
Como esta no codigo abaixo, ele só filtra ou no combo, ou nas datas, queria relacionar tudo, o combo com as datas e filtrar na
JTable
Segue o código completo
package Relatorio;
import Cadastro.Fornecedor;
import java.awt.event.ActionListener;
import java.sql.SQLException;
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 RelaContasFiltrado extends javax.swing.JFrame
{
MaskFormatter formatodatacada;
private MaskFormatter formatodata;
private MaskFormatter formatocep;
private MaskFormatter formatocnpj;
private MaskFormatter formatoie;
private MaskFormatter formatoccm;
private MaskFormatter formatoddi;
private MaskFormatter formatotelefone;
int navega = 0 ;
String ordenacao ="codigo";
String ordenacao1 ="posicaoconta";
String novo = "n";
conexao contas;
private ActionListener ActionListener;
/** Creates new form RelaContasFiltrado */
public RelaContasFiltrado()
{
initComponents();
contas = new conexao();
contas.conecta();
contas.executeSQL("select * from Contas order by "+ordenacao);
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()
{
{
txtpesquisa.setVisible(false);
//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(20);
//FORNECEDOR
jTable.getColumnModel().getColumn(2).setPreferredWidth(200);
//VALOR
jTable.getColumnModel().getColumn(3).setPreferredWidth(30);
//POSIÇÃO CONTA
jTable.getColumnModel().getColumn(4).setPreferredWidth(30);
//CODIGO DE BARRAS
jTable.getColumnModel().getColumn(5).setPreferredWidth(200);
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 method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings(“unchecked”)
// <editor-fold defaultstate=“collapsed” desc=“Generated Code”>
private void initComponents() {
jPanel3 = new javax.swing.JPanel();
jLabel14 = new javax.swing.JLabel();
datacada = new javax.swing.JTextField();
horacada = new javax.swing.JTextField();
jPanel1 = new javax.swing.JPanel();
btsair = new javax.swing.JButton();
btfiltartabela = new javax.swing.JButton();
btlistatudo = new javax.swing.JButton();
cmbpesquisa = new javax.swing.JComboBox();
txtpesquisa = new javax.swing.JTextField();
jScrollPane2 = new javax.swing.JScrollPane();
jTable = new javax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("CRCJ - Assessoria Em Informática");
setResizable(false);
jPanel3.setBackground(java.awt.SystemColor.desktop);
jPanel3.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
jPanel3.setForeground(new java.awt.Color(255, 255, 255));
jLabel14.setBackground(new java.awt.Color(0, 255, 0));
jLabel14.setFont(new java.awt.Font("Haettenschweiler", 0, 24));
jLabel14.setForeground(new java.awt.Color(255, 255, 255));
jLabel14.setText("Relatório Das Contas Pagar e Receber");
datacada.setBackground(java.awt.SystemColor.desktop);
datacada.setFont(new java.awt.Font("Arial", 0, 16));
datacada.setForeground(new java.awt.Color(255, 255, 255));
datacada.setHorizontalAlignment(javax.swing.JTextField.CENTER);
horacada.setBackground(java.awt.SystemColor.desktop);
horacada.setFont(new java.awt.Font("Arial", 0, 16));
horacada.setForeground(new java.awt.Color(255, 255, 255));
horacada.setHorizontalAlignment(javax.swing.JTextField.CENTER);
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel14)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 433, Short.MAX_VALUE)
.addComponent(datacada, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(horacada, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(21, 21, 21))
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap(13, Short.MAX_VALUE)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(horacada, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(datacada, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel14)
.addContainerGap(12, Short.MAX_VALUE))
);
jPanel1.setBackground(new java.awt.Color(102, 255, 204));
jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
jPanel1.setForeground(new java.awt.Color(255, 255, 255));
btsair.setFont(new java.awt.Font("Tahoma", 1, 10)); // NOI18N
btsair.setText("Sair");
btsair.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btsairActionPerformed(evt);
}
});
btfiltartabela.setFont(new java.awt.Font("Tahoma", 1, 10)); // NOI18N
btfiltartabela.setText("Filtrar ");
btfiltartabela.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btfiltartabelaActionPerformed(evt);
}
});
btlistatudo.setFont(new java.awt.Font("Tahoma", 1, 10)); // NOI18N
btlistatudo.setText("Listar Todos");
btlistatudo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btlistatudoActionPerformed(evt);
}
});
cmbpesquisa.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
cmbpesquisa.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Pagar", "Paga", "Receber", "Recebida" }));
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(cmbpesquisa, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(40, 40, 40)
.addComponent(btfiltartabela)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 244, Short.MAX_VALUE)
.addComponent(btlistatudo)
.addGap(88, 88, 88)
.addComponent(txtpesquisa, javax.swing.GroupLayout.PREFERRED_SIZE, 111, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(83, 83, 83)
.addComponent(btsair, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(28, 28, 28))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btsair)
.addComponent(cmbpesquisa, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btfiltartabela)
.addComponent(txtpesquisa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btlistatudo))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jTable.setFont(new java.awt.Font("Tahoma", 0, 10));
jTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null, null, null},
{null, null, null, null, null, null},
{null, null, null, null, null, null},
{null, null, null, null, null, null},
{null, null, null, null, null, null}
},
new String [] {
"Código", "Data Vencimento", "Fornecedor", "Valor", "Posição da Conta", "Código de Barras"
}
) {
boolean[] canEdit = new boolean [] {
false, false, false, false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
jTable.getTableHeader().setReorderingAllowed(false);
jScrollPane2.setViewportView(jTable);
jTable.getColumnModel().getColumn(0).setResizable(false);
jTable.getColumnModel().getColumn(1).setResizable(false);
jTable.getColumnModel().getColumn(2).setResizable(false);
jTable.getColumnModel().getColumn(3).setResizable(false);
jTable.getColumnModel().getColumn(5).setResizable(false);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 965, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(1, 1, 1)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 531, Short.MAX_VALUE)
.addContainerGap())
);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-993)/2, (screenSize.height-685)/2, 993, 685);
}// </editor-fold>
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)
<a href="//this.dispose">//this.dispose</a>();
//new Principal.TelaPrincipal().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)
{
<a href="//System.exit">//System.exit</a>(0);
this.dispose();
new Principal.TelaPrincipal().show();
}
}
private void btfiltartabelaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
////contas.executeSQL(“select * from Contas where posicaoconta like '”+txtpesquisa.getText()+"%’ order by “+ordenacao1);
<a href="//contas.executeSQL">//contas.executeSQL</a>(“select * from Contas where posicaoconta like '”+txtpesquisa.getText()+”’ order by “+ordenacao1);
contas.executeSQL(“select * from Contas where posicaoconta like '”+cmbpesquisa.getSelectedItem()+”’ order by “+ordenacao1);
preencher_jtable();
txtpesquisa.setText(”");
try
{
contas.resultset.last();
}
catch (SQLException ex)
{
Logger.getLogger(Fornecedor.class.getName()).log(Level.SEVERE, null, ex);
}
mostrardados();
}
private void btlistatudoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
contas.executeSQL(“select * from Contas where posicaoconta like '”+txtpesquisa.getText()+"%’ order by “+ordenacao1);
<a href="//contas.executeSQL">//contas.executeSQL</a>(“select * from Contas where posicaoconta like '”+txtpesquisa.getText()+”’ order by “+ordenacao1);
preencher_jtable();
txtpesquisa.setText(”");
try
{
contas.resultset.last();
}
catch (SQLException ex)
{
Logger.getLogger(Fornecedor.class.getName()).log(Level.SEVERE, null, ex);
}
mostrardados();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new RelaContasFiltrado().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton btfiltartabela;
private javax.swing.JButton btlistatudo;
private javax.swing.JButton btsair;
private javax.swing.JComboBox cmbpesquisa;
private javax.swing.JTextField datacada;
private javax.swing.JTextField horacada;
private javax.swing.JLabel jLabel14;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel3;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTable jTable;
private javax.swing.JTextField txtpesquisa;
// End of variables declaration
}
Seria algo parecido com isso?http://www.java2s.com/Tutorial/Java/0240__Swing/FiltertablebythetextinaTextField.htm
Filer tabela linha e chave de ordenação, parecido mas o que eu queria, na realidade era trabalhar com 3 filtros
1 - JComboBox [ pagar, receber, paga, recebida ]
1 - JTextField [ data inicial ]
1 - JTextField [ data final ]
com esses 3 fltros ele me mostra na JTable.
Eu consigo filtrar um por um, por ex no combo escolho pagar
e click botao filtrar, ai tudo bem ele me mostra todos os dados na JTable os cadastros de todos pagar, mas ai eu
precisso tambem filtrar um periodo que esta nas datas, é ai que eu não consigo
O que eu queria, na realidade era trabalhar com 3 filtros
1 - JComboBox [ pagar, receber, paga, recebida ]
1 - JTextField [ data inicial ]
1 - JTextField [ data final ]
com esses 3 fltros ele me mostra na JTable.
Eu consigo filtrar um por um, por ex no combo escolho pagar
e click botao filtrar, ai tudo bem ele me mostra todos os dados na JTable os cadastros de todos pagar, mas ai eu
precisso tambem filtrar um periodo que esta nas datas, é ai que eu não consigo