JTable

Fiz assim agora

Citação:

import java.awt.event.;
import java.util.
;
import java.awt.;
import java.sql.
;
import javax.swing.*;
public class TabelaCombo extends JFrame
{
Connection connection, conexao;
JTable tab;

public TabelaCombo()
{
setTitle(“Tabela”);
setSize(700,500);
String url = “jdbc:odbc:MeuBanco”;
try
{
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
connection = DriverManager.getConnection(url);

}
catch(ClassNotFoundException ex)
{
JOptionPane.showMessageDialog(null,“Driver JDBC_ODBC não encontrado!”);
}
catch(SQLException ex)
{
JOptionPane.showMessageDialog(null,“Problemas na conexão com a fonte de dados”);
}
buscaTabela(“SELECT * FROM tbveiculo”);
setSize(800,600);
show();
}
public void buscaTabela(String query)
{
Statement st;
ResultSet res;
try
{
st = connection.createStatement();
res = st.executeQuery(query);
displayresultset( res );
st.close();
}

catch (SQLException ex)
{
ex.printStackTrace();
}

}
public void displayresultset( ResultSet rs )
throws SQLException
{
//posiciona para o primeiro registro
boolean moreRecords = rs.next();
// se não houver registro manda menssagem
if (!moreRecords)
{
JOptionPane.showMessageDialog(null,“Nao existe registro!”);
setTitle(“Filtro sem registro”);
return;
}
setTitle(“Filtro”);
Vector columnHeads = new Vector();
Vector rows = new Vector();
try
{
//obtem titulos de coluna
ResultSetMetaData rsmd = rs.getMetaData();
for (int i=1; i <=rsmd.getColumnCount(); ++i)
columnHeads.addElement( rsmd.getColumnName(i));
// obtem dados das linhas
do
{
rows.addElement( getNextRow (rs, rsmd));
}
while(rs.next());
//exibe a tabela com os registro se houver

tab = new JTable(rows, columnHeads );
JScrollPane scroller = new JScrollPane(tab);
getContentPane().add(scroller, BorderLayout.CENTER);
validate();
}
catch (SQLException ex)
{
ex.printStackTrace();
}
}
public Vector getNextRow( ResultSet rs, ResultSetMetaData rsmd)
throws SQLException
{
Vector currentRow = new Vector();
for( int i =1; i<= rsmd.getColumnCount(); ++i)
switch (rsmd.getColumnType(i))
{
case Types.VARCHAR:
currentRow.addElement( rs.getString(i));
break;
case Types.INTEGER:
currentRow.addElement(
new Long( rs.getLong(i)));
break;
default:
System.out.println ("");
}
return currentRow;
}
public void shutDown()
{
try
{
connection.close();
}
catch(SQLException ex)
{
ex.printStackTrace();
}
}

public static void main(String args[])
{
final TabelaCombo app = new TabelaCombo();
app.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e)
{
app.shutDown();
System.exit(0);
}
}
);
}
}

Agora nesse outro arquivo abaixo chamei o TabelaCombo

Citação:

if(event.getSource()==micmt)
{
TabelaCombo tb = new TabelaCombo();
tb.buscaTabela(“SELECT *FROM tbmotorista”);
}

So que esta acontecendo o seguinte
ele mostra o registro do banco tbmotorista apaga e mostra o do
tbveiculo que está no TabelaCombo isso é em questao de milesimos de segundos…

QUer dizer o que eu fiz não resolveu nada…
Como faço ?

Como vc faz oq?

danieldestro

nesse outro programa chamado MDIApplication

quando o usuario clicar no botao X
ele usa o programa TabelCombo
so que alter a query de consulta ao banco de dados
que seria essa
exemplo:
SELECT *FROM testando

Heim?

Tente ser o mais claro… fala o que vc quer fazer… o que fez… e o que espera que aconteça!

Pra eu poder te ajudar melhor.

valeu

O meu deus, eu fiz aquele programa TabelaCombo.java que serve para exibir os dados do banco de dados em uma grade!!
e no tabelacombo eu setei o valor da query de consulta
ao qual pega os dados

Certo, até aqui intenderãom ???

Agora aqui está o meu outro programa que chama-se MDIApplication.java

aqui nesse programa MDIApplication quero chamar o tabelaCombo,
e alterar o campo de consulta sql, lá no tabela… está assim SELECT *FROM tbveiculo…

aqui nesse meu programa vai ter varias consulta tipo: relação motorista
relação de viagems:
relação de km rodados:

aqui quando clicar no botao relação motorista
ele chama o TabelaCombo e alterar a String query de consulta pela
SELECT *From motorista
exemplo:

[code]

if (e.getSource()==relação motorista)
{
// aqui chama o TabelaCombo
TabelaCombo tb = new TabelaCombo()
//aqui eu altero o valor da query
tb.buscaTabela("SELECT *FROM motorista");
aqui é que esta o problema que eu não consig oalterar o valor direito
na hora que clico no botao
ele exibe os dados da tabela motorista
e apaga e mostra os dados da tabela tbveiculo (que está setado no TabelaCombo)
isso ocorre em torno de segundo
ta vendo aqui que esta o problema[/code]

There you go, my friend!

[code]import java.awt.event.;
import java.util.
;
import java.awt.;
import java.sql.
;
import javax.swing.*;

public class TabelaCombo extends JFrame {

Connection connection, conexao;
JTable tab;

public TabelaCombo&#40;&#41; &#123;
	setTitle&#40;&quot;Tabela&quot;&#41;;
	setSize&#40;700,500&#41;;
	String url = &quot;jdbc&#58;odbc&#58;MeuBanco&quot;;
	try &#123;
		Class.forName&#40;&quot;sun.jdbc.odbc.JdbcOdbcDriver&quot;&#41;;
		connection = DriverManager.getConnection&#40;url&#41;;
	&#125; catch&#40;ClassNotFoundException ex&#41; &#123;
		JOptionPane.showMessageDialog&#40;null,&quot;Driver JDBC_ODBC não encontrado!&quot;&#41;;
	&#125; catch&#40;SQLException ex&#41; &#123;
		JOptionPane.showMessageDialog&#40;null,&quot;Problemas na conexão com a fonte de dados&quot;&#41;;
	&#125;

	buscaTabela&#40;&quot;SELECT * FROM tbveiculo&quot;&#41;;
	setSize&#40;800,600&#41;;
	show&#40;&#41;;
&#125;

public void buscaTabela&#40;String query&#41; &#123;
	Statement st;
	ResultSet res;
	try &#123;
		st = connection.createStatement&#40;&#41;;
		res = st.executeQuery&#40;query&#41;;
		displayresultset&#40; res &#41;;
		st.close&#40;&#41;;
	&#125;
	catch &#40;SQLException ex&#41; &#123;
		ex.printStackTrace&#40;&#41;;
	&#125;
&#125;

public void displayresultset&#40; ResultSet rs &#41; throws SQLException &#123;
	//posiciona para o primeiro registro
	boolean moreRecords = rs.next&#40;&#41;;
	// se não houver registro manda menssagem
	if &#40;!moreRecords&#41; &#123;
		JOptionPane.showMessageDialog&#40;null,&quot;Nao existe registro!&quot;&#41;;
		setTitle&#40;&quot;Filtro sem registro&quot;&#41;;
		return;
	&#125;
	setTitle&#40;&quot;Filtro&quot;&#41;;
	Vector columnHeads = new Vector&#40;&#41;;
	Vector rows = new Vector&#40;&#41;;
	try &#123;
		//obtem titulos de coluna
		ResultSetMetaData rsmd = rs.getMetaData&#40;&#41;;
		for &#40;int i=1; i &lt;=rsmd.getColumnCount&#40;&#41;; ++i&#41; &#123;
			columnHeads.addElement&#40; rsmd.getColumnName&#40;i&#41;&#41;;
		&#125;
		// obtem dados das linhas
		do &#123;
			rows.addElement&#40;getNextRow&#40;rs, rsmd&#41;&#41;;
		&#125; while&#40;rs.next&#40;&#41;&#41;;
		//exibe a tabela com os registro se houver
		tab = new JTable&#40;rows, columnHeads&#41;;
		JScrollPane scroller = new JScrollPane&#40;tab&#41;;
		getContentPane&#40;&#41;.removeAll&#40;&#41;;
		getContentPane&#40;&#41;.add&#40;scroller, BorderLayout.CENTER&#41;;
		validate&#40;&#41;;
	&#125; catch &#40;SQLException ex&#41; &#123;
		ex.printStackTrace&#40;&#41;;
	&#125;
&#125;

public Vector getNextRow&#40; ResultSet rs, ResultSetMetaData rsmd&#41; throws SQLException &#123;
	Vector currentRow = new Vector&#40;&#41;;
	for&#40; int i =1; i&lt;= rsmd.getColumnCount&#40;&#41;; ++i&#41;
		switch&#40;rsmd.getColumnType&#40;i&#41;&#41; &#123;
			case Types.VARCHAR&#58;
				currentRow.addElement&#40; rs.getString&#40;i&#41;&#41;;
				break;
			case Types.INTEGER&#58;
				currentRow.addElement&#40; new Long&#40; rs.getLong&#40;i&#41;&#41;&#41;;
				break;
			default&#58;
				System.out.println&#40;&quot;&quot;&#41;;
		&#125;
	return currentRow;
&#125;

public void shutDown&#40;&#41; &#123;
	try &#123; connection.close&#40;&#41;; &#125;
	catch&#40;SQLException ex&#41; &#123; ex.printStackTrace&#40;&#41;; &#125;
&#125;

public static void main&#40;String args&#91;&#93;&#41; &#123;
	final TabelaCombo app = new TabelaCombo&#40;&#41;;
	app.addWindowListener&#40; new WindowAdapter&#40;&#41; &#123;
		public void windowClosing&#40;WindowEvent e&#41; &#123;
			app.shutDown&#40;&#41;;
			System.exit&#40;0&#41;;
		&#125;
	&#125; &#41;;
	try &#123;
		Thread.sleep&#40;15000&#41;;
	&#125; catch&#40;Exception e&#41; &#123;&#125;
	app.buscaTabela&#40;&quot;SELECT * FROM tbteste&quot;&#41;;
&#125;

}[/code]

Faltou você remover o jtable atual antes de adicionar o novo.

		getContentPane().removeAll();

Felizmente eu ja com segui resolver o problema
a unica coisa que eu fiz foi tirar o metodo
buscaTabela("Select *from tbveiculo);

A unica coisa agora que eu preciso é
aumentar as escritas, largura da linha, e colocar barra de rolagem
em baixo , so tem barar de rolagem laterar.