Boa noite galera estou com uma dificuldade enorme, o meu problema é o seguinte:
criei uma consulta em um banco de dados e eu gostaria de quando apertar o Jbutton ele me mostrasse uma tabela na mesma janela com os resultados obtidos desta consulta, porém eu não estou conseguindo vincular a JTable ao Jbutton, alguém sabe como faço isso?
Basta voce nao deixar a tabela visivel, e adicionar um evento ao botao. Quando o botao for pressionado, a tabela fica visivel
Um exemplo bobo:
[code]import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTable;
public class teste extends JFrame {
JButton button;
JTable table;
public teste() {//metodo construtor
button = new JButton("ativar jtable");//cria botao
table = new JTable(15,3);//cria tabela com 15 linhas e 3 colunas
this.add(button, BorderLayout.NORTH);//adiciona botao no norte
this.add(table);//adiciona tabela no centro
table.setVisible(false);//deixa tabela invisivel
button.addActionListener(//adiciona evento ao botao
new ActionListener() {
public void actionPerformed(ActionEvent e) {
table.setVisible(true);//deixa tabela visivel
}
}
);
}
public static void main(String[] args) {//cria janela
teste e = new teste();
e.setSize(300,300);
e.setVisible(true);
e.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}[/code]
espero ter ajudado
abracosssss
Muito Obrigado.
Porém eu coloquei um conteiner e eu posicionei a tabela na tela e eu já tentei vincular o comando
tela.add(tabela);
ao ActionEvent porém não funciona.
Será que você sabe como faço isso?
Esse é o código do meu ActionEvent:
{
//criando os dados
String CadNome = t2.getText(); //obtém nome digitado
String M=lista1.getSelectedItem().toString();//Modelo
String F=lista2.getSelectedItem().toString();//Flange
String FU=lista3.getSelectedItem().toString();//Furo
String E=lista4.getSelectedItem().toString();//Eixo
String S=lista5.getSelectedItem().toString();//Sucção
String P=lista6.getSelectedItem().toString();//Pressão
String D=lista7.getSelectedItem().toString();//Deslocamento
// Tabela do Relatório
try {
Vector titulo = new Vector();
Vector dados = new Vector();
String url = "jdbc:odbc:Bombas";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from cadastro);");
rs.next();
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
cabecalho.addElement(rsmd.getColumnName(i));
do{
}
while (rs.next());
scrollPane.setVisible(true);
JOptionPane.showMessageDialog(null,"Código Cadastrado!!!","Execução",JOptionPane.INFORMATION_MESSAGE);
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Problemas ao Gravar","Execução",JOptionPane.ERROR_MESSAGE);
}
tabela = new JTable (dados,tiulo);
scrollPane = new JScrollPane(tabela);
scrollPane.setBounds(20,350,500,103);
tela.add(scrollPane);
}
}
Bom, se as observacoes abaixo nao funcionarem, poste seu codigo inteiro para dar uma olhada.
Obs:
1 - vc adicionou tela ao frame principal?
2 - tente redimensionar a janela apos clicar no botao… talvez a janela nao estaja sendo renderizada novamente. A solucao para esse problema acredito ser utilizar o método repaint.
E porque vc nao faz isso:
- Cria e já adiciona a JTable ao Conteiner, e a deixa com setVisible(false).
- Adiciona o evento ao botão, e nesnte metodo (ou classe), vc realiza a consulta.
- 1 Com a resposta da consulta vc preenche o seu TableModel e o adiciona a sua JTable.
2.2 Vc atualiza sua JTable e mostra ela na tela, setVisible(true);
Acredito que nao seja necessario o paint() ou repaint(), já que quando vc adiciona os elementos em sua JTable o MODEL lança um evento e a JTable já chama o repaint().
Muito obrigado galera. Eu fiz o seguinte acrescentei tabela.setVisible(true); ao botão, abraços.