Boa tarde pessoal, to iniciando em java e tive a ideia de fazer esse programa, mas estou tendo essa dificuldade, se alguem puder me ajudar...
Eu quero criar uma classe na qual será responsavel pela consulta.
a minha ideia é ter 2 combo box.
o 1º seria a tabela que o usuario quer pesquisar. e o 2º é um item que tem nessa tabela e será o "indice" da consulta.
Por exemplo:
tem a tabela funcionario e nela ele pode escolher procurar por nome, cpf, etc... e entao mais a frente tem o JTextField que ele digitará o que ele está procurando.
Feito isso, ele terá uma Jtable onde todos os dados puxados do mysql serão jogados. Nessa Jtable as ultimas duas colunas serão: Visualizar (onde ele visualizará todos os dados inserido sobre o que ele buscou) e excluir (que excluirá os dados respectivos)
Agora vai o problema:
Como colocar esse botoes na Jtable?
e como fazer para ele puxar os dados do mysql depois de clicados?
Segue o código TESTE que eu fiz da tabela. e seguinte o codigo que eu ja fiz do programa mas nao tá com a Jtable ainda, está apenas fazendo a consulta.
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.text.NumberFormat;
import java.util.EventObject;
import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;
public class tabela_teste extends Interface{
JTable tabela;
DefaultTableModel dtm;
JButton teste;
JPanel p1;
public tabela_teste()
{
p1 = new JPanel();
p1.setLayout(null);
p1.setBounds(10,20,500,200);
String[] colNames = new String[] { "teste", "aaa", "bbbb", "teste3" };
final String[][] table = {{"","","",""}};
dtm = new DefaultTableModel(table, colNames) {
public Class getColumnClass(int col) {
return table[0][col].getClass();
}
};
JTable tabela = new JTable(dtm);
TableColumnModel colModel = tabela.getColumnModel();
colModel.getColumn(3).setCellRenderer(new ButtonRenderer());
colModel.getColumn(3).setCellEditor(new ButtonEditor(tabela));
JScrollPane scroll = new JScrollPane(tabela);
scroll.setBounds(10,20,450,100);
p1.add(scroll);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().add(p1);
// getContentPane().add(teste);
setVisible(true);
}
class ButtonEditor extends AbstractCellEditor implements TableCellEditor,
ActionListener {
JTable table;
JButton button = new JButton();
NumberFormat nf = NumberFormat.getCurrencyInstance();
int clickCountToStart = 1;
public ButtonEditor(JTable table) {
this.table = table;
button.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
int a = table.getSelectedRow();
JOptionPane.showMessageDialog(null,"teste"+a );
}
public Component getTableCellEditorComponent(JTable table,
Object value,
boolean isSelected,
int row, int column) {
button.setText("Visualizar");
return button;
}
public Object getCellEditorValue() {
return button.getText();
}
public boolean isCellEditable(EventObject anEvent) {
if(anEvent instanceof MouseEvent) {
return ((MouseEvent)anEvent).getClickCount() >= clickCountToStart;
}
return true;
}
public boolean shouldSelectCell(EventObject anEvent) {
return true;
}
public boolean stopCellEditing() {
return super.stopCellEditing();
}
public void cancelCellEditing() {
super.cancelCellEditing();
}
}
public static void main (String args[])
{
tabela_teste f = new tabela_teste();
for (int i=0;i<=1000;i++)
f.inserirlinha();
}
public void inserirlinha()
{
String a="teste1",b="teste2",c="teste3";
dtm.addRow(new String [] {a,b,c,"Visualizar"});
// tabela.setModel(dtm);
// te3.setCellEditor(new DefaultCellEditor(comboBox));
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==teste)
{
inserirlinha();
}
}
}
class ButtonRenderer implements TableCellRenderer {
JButton button = new JButton("Visualizar");
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row, int column) {
return button;
}
}
Nesse primeiro codigo, se voces compilarem, verão que ja carrega com a primeira linha, mas eu nao quero essa primeira linha aparecendo, eu quero que carregue apenas depois de ser feita a consulta. como posso tira-la?
package programa;
//import ButtonRenderer;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;
public class Consultar extends Interface implements ActionListener{
JComboBox CombTabela, CombComputador,CombImpressora, CombOcorrencia, CombNextel, CombEvento ;
JTextField txConsult;
JButton BtConsultar;
String strTabela="", strCondicao="";
JLabel LConsult;
int Counter;
//bd
private Connection conexao;
private Statement meuState;
private ResultSet rs;
//tabela
JTable tabela;
DefaultTableModel dtm;
JButton teste;
JPanel p1;
public Consultar()
{
p1 = new JPanel();
p1.setLayout(null);
p1.setBounds(30,120,700,300);
String[] colNames = new String[] { "teste", "aaa", "bbbb", "teste3" };
final String[][] table = {{"","","",""}};
dtm = new DefaultTableModel(table, colNames) {
public Class getColumnClass(int col) {
return table[0][col].getClass();
}
};
JTable tabela = new JTable(dtm);
TableColumnModel colModel = tabela.getColumnModel();
// colModel.getColumn(3).setCellRenderer(new ButtonRenderer());
// colModel.getColumn(3).setCellEditor(new ButtonEditor(tabela));
JScrollPane scroll = new JScrollPane(tabela);
scroll.setBounds(10,20,600,280);
p1.add(scroll);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().add(p1);
// getContentPane().add(teste);
setVisible(true);
LConsult= new JLabel("Consultar");
LConsult.setBounds(250,20,150,20);
BtConsultar= new JButton ("Consultar");
BtConsultar.setBounds(450,100,90,20);
BtConsultar.addActionListener(this);
txConsult= new JTextField();
txConsult.setBounds(450,70,150,20);
CombTabela = new JComboBox();
CombTabela.addItem(" Computador");
CombTabela.addItem(" Impressora");
CombTabela.addItem(" Ocorrência");
CombTabela.addItem(" Nextel");
CombTabela.addItem(" Evento");
CombTabela.setBounds(35,70,120,20);
CombTabela.setSelectedIndex(-1);
CombTabela.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e)
{
Counter=0;
Counter++;
switch(CombTabela.getSelectedIndex())
{
case 0:{
strTabela="Computador";
CombComputador.setVisible(true);
CombImpressora.setVisible(false) ;
CombOcorrencia.setVisible(false);
CombNextel.setVisible(false) ;
CombEvento.setVisible(false);
break;
}
case 1 :{
strTabela="Impressora";
CombComputador.setVisible(false);
CombImpressora.setVisible(true) ;
CombOcorrencia.setVisible(false);
CombNextel.setVisible(false) ;
CombEvento.setVisible(false);
break;
}
case 2 :{
strTabela="Ocorrencia";
CombComputador.setVisible(false);
CombImpressora.setVisible(false) ;
CombOcorrencia.setVisible(true);
CombNextel.setVisible(false) ;
CombEvento.setVisible(false);
break;
}
case 3 :{
strTabela="Nextel";
CombComputador.setVisible(false);
CombImpressora.setVisible(false) ;
CombOcorrencia.setVisible(false);
CombNextel.setVisible(true) ;
CombEvento.setVisible(false);
break;
}
case 4 :{
strTabela="Evento";
CombComputador.setVisible(false);
CombImpressora.setVisible(false) ;
CombOcorrencia.setVisible(false);
CombNextel.setVisible(false) ;
CombEvento.setVisible(true);
break;
}
}
}
});
CombComputador= new JComboBox();
CombComputador.setVisible(false);
CombComputador.addItem(" Nome do PC");
CombComputador.addItem(" Usuario");
CombComputador.addItem(" Configuração do PC");
CombComputador.addItem(" Setor");
CombComputador.addItem(" Proprietário");
CombComputador.setBounds(215,70,150,20);
CombComputador.setSelectedIndex(-1);
CombComputador.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e)
{
Counter=1;
Counter++;
switch(CombComputador.getSelectedIndex())
{
case 0:{
strCondicao="Nome do PC";
break;
}
case 1 :{
strCondicao="Usuario";
break;
}
case 2 :{
strCondicao="Configuração do PC";
break;
}
case 3 :{
strCondicao="Setor";
break;
}
case 4 :{
strCondicao="Proprietario";
break;
}
}
}
});
CombImpressora = new JComboBox();
CombImpressora.setVisible(false);
CombImpressora.addItem(" Marca");
CombImpressora.addItem(" Modelo");
CombImpressora.addItem(" IP");
CombImpressora.addItem(" Setor");
CombImpressora.setBounds(215,70,150,20);
CombImpressora.setSelectedIndex(-1);
CombImpressora.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e)
{
Counter=1;
Counter++;
switch(CombComputador.getSelectedIndex())
{
case 0:{
strCondicao="Marca";
break;
}
case 1 :{
strCondicao="Modelo";
break;
}
case 2 :{
strCondicao="IP";
break;
}
case 3 :{
strCondicao="Setor";
break;
}
}
}});
CombOcorrencia = new JComboBox();
CombOcorrencia.setVisible(false);
CombOcorrencia.addItem(" Usuario");
CombOcorrencia.addItem(" Setor");
CombOcorrencia.addItem(" Data do Problema");
CombOcorrencia.addItem(" Data da Resolução");
CombOcorrencia.addItem(" Situação");
CombOcorrencia.setBounds(215,70,150,20);
CombOcorrencia.setSelectedIndex(-1);
CombOcorrencia.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e)
{
Counter=1;
Counter++;
switch(CombOcorrencia.getSelectedIndex())
{
case 0:{
strCondicao="Usuario";
break;
}
case 1 :{
strCondicao="Setor";
break;
}
case 2 :{
strCondicao="Data do Problema";
break;
}
case 3 :{
strCondicao="Data da Resolução";
break;
}
case 4 :{
strCondicao="Situação";
break;
}
}
}
});
CombNextel = new JComboBox();
CombNextel.setVisible(false);
CombNextel.addItem(" Nome");
CombNextel.addItem(" Setor");
CombNextel.addItem(" Unidade");
CombNextel.addItem(" Modelo");
CombNextel.addItem(" Número");
CombNextel.addItem(" Status");
CombNextel.setBounds(215,70,150,20);
CombNextel.setSelectedIndex(-1);
CombNextel.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e)
{
Counter=1;
Counter++;
switch(CombNextel.getSelectedIndex())
{
case 0:{
strCondicao="Nome";
break;
}
case 1 :{
strCondicao="Setor";
break;
}
case 2 :{
strCondicao="Unidade";
break;
}
case 3 :{
strCondicao="Modelo";
break;
}
case 4 :{
strCondicao="Número";
break;
}
case 5 :{
strCondicao="Número";
break;
}
}}});
CombEvento= new JComboBox();
CombEvento.setVisible(false);
CombEvento.addItem(" Titulo");
CombEvento.addItem(" Data");
CombEvento.addItem(" Status");
CombEvento.setBounds(215,70,150,20);
CombEvento.setSelectedIndex(-1);
CombEvento.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e)
{
Counter=1;
Counter++;
switch(CombEvento.getSelectedIndex())
{
case 0:{
strCondicao="Nome";
break;
}
case 1 :{
strCondicao="Setor";
break;
}
case 2 :{
strCondicao="Unidade";
break;
}
case 3 :{
strCondicao="Modelo";
break;
}
}}});
getContentPane().add(LConsult);
getContentPane().add(txConsult);
getContentPane().add(BtConsultar);
getContentPane().add(CombTabela);
getContentPane().add(CombComputador);
getContentPane().add(CombImpressora);
getContentPane().add(CombOcorrencia);
getContentPane().add(CombNextel);
getContentPane().add(CombEvento);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==BtConsultar)
{
try
{
Class.forName("com.mysql.jdbc.Driver");
conexao = DriverManager.getConnection("jdbc:mysql://localhost/prol", "root", "");
meuState = conexao.createStatement();
rs = meuState.executeQuery("select titulo, data, status from evento where status = '"+txConsult.getText()+"';");
String titulo="",data="",status="";
while (rs.next()){
titulo = (rs.getString("titulo"));
data = (rs.getString("data"));
status = (rs.getString("status"));
}
try {
conexao.close();
} catch (SQLException ex) {
System.out.println("Não foi possível fechar a conexão!");
}
}
catch(ClassNotFoundException ex)
{
System.out.println("Driver JDBC-ODBC não encontrado!");
}
catch(SQLException ex)
{
System.out.println("Problemas na conexao com a fonte de dados");
}
}
}
public static void main (String args[])
{
new Consultar();
}
}
Se alguem puder me ajudar, obrigado, e ajudar a melhor o codigo em geral.
