Problema com JTable [Resolvido]

4 respostas
H

Tudo bem pessoal?

Estou com um problema com JTable, na verdade eu não consigo visualizar oque eu estou fazendo =/

Simplesmente nao sei oque aconteceu, até agora estava tudo funcionando, quando terminei o codigo sumiu.

Segue o código:

obs: Eu comentei oque achei desnecessário.

package projeto_final;

import java.awt.*;
import java.awt.event.*;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;

import java.sql.ResultSet;
//import java.sql.ResultSetMetaData;
//import java.sql.Statement;

import java.sql.*;

import javax.swing.*;


public class Filmes_Alterar_Cadastro extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField tfSql;
	Connection con; //Necessario para conexao com o banco de dados
	PreparedStatement sql; //Necessario para conexao com sql
	private PreparedStatement statment;
	private ResultSet resultSet;
	private JScrollPane scrollPane;
	private JTable table;

	/**
	 * Launch the application.
	 */
	
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					copy frame = new copy();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Filmes_Alterar_Cadastro() {
		
		JFrame frame = new Filmes_Alterar_Cadastro();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);		
				
/*------------------------------Conexão Banco de Dados-----------------------------------------*/
		
		try {	// Necessita da criação do "Try Catch" para funcionar a conexão
			
	
		// Registra o Driver JDBC
		Class.forName("com.mysql.jdbc.Driver");
		
		// Estabelece a conexão ao Banco de Dados
		 con = DriverManager.getConnection(
				"jdbc:mysql://localhost/locadora_piratas",
				"root", "chari123");
		
	//	  sql = con.prepareStatement(
		//	"insert into filmes (nome, genero, ator, diretor, duracao, descricao) values (?, ?, ?, ?, ?, ?)"); // (Campos do banco de dados) e (? para codificar)
		
		} catch (Exception e) { // "Senão do "Try Catch"
			e.printStackTrace();
			JOptionPane.showMessageDialog(null,"Erro na conexao! (Conexao Banco)"); // Exibir Erro de Conexao
			
		}

/*----------------------------------------------------------------------------------------------------*/
		
		
		setTitle("Alterar Filme");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 420);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblConsultaSql = new JLabel("Consulta SQL:");
		lblConsultaSql.setBounds(22, 22, 83, 14);
		contentPane.add(lblConsultaSql);
		
		tfSql = new JTextField();
		tfSql.setBounds(22, 47, 160, 20);
		contentPane.add(tfSql);
		tfSql.setColumns(10);
		
		scrollPane = new JScrollPane();
		scrollPane.setBounds(22, 163, 396, 199);
		contentPane.add(scrollPane);
		
		table = new JTable();
		scrollPane.setViewportView(table);
		
		
	
		
		JButton btnExecutar = new JButton("Executar");

		
	btnExecutar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				try {
					if(tfSql.getText().equals("")){
						return;
					}
					
					resultSet = statment.executeQuery();
					DefaultTableModel tableModel = new DefaultTableModel(
						new String[]{},0){

							/**
							 * 
							 */
							private static final long serialVersionUID = 1L;		
	                 	};
					
	               int qtdeColunas = resultSet.getMetaData().getColumnCount();
	               for (int indice =1; indice<=qtdeColunas; indice++)
	               			tableModel.addColumn(resultSet.getMetaData().getColumnName(indice));

				  table = new JTable(tableModel);
				  DefaultTableModel dtm = (DefaultTableModel) table.getModel();
				  
				  while (resultSet.next()){
					  try{
						  String[] dados = new String[qtdeColunas];
						  for (int i = 1; i<=qtdeColunas; i++){
							  dados[i-1] = resultSet.getString(i);
						  }
						  dtm.addRow(dados);
						  System.out.println();
					  }
					  catch (SQLException erro){
					  }
					  scrollPane.setViewportView(table);
					  
				  }
				  resultSet.close();
			//	  con.close();  // No livro que peguei como base esta dizendo statment.close(); só que nao funciona
				}
				catch (Exception erro){
					JOptionPane.showMessageDialog(null, "Comando SQL invalido!" + erro.toString());
				}
				
			}


	});
	
	btnExecutar.setBounds(22, 85, 89, 23);
	contentPane.add(btnExecutar);
	
	}
	

}

Eu sou iniciante em Java, estou terminando meu primeiro curso agora (este trabalho que estou fazendo é meu trabalho final)

Já consegui fazer cadastro tudo bonitao, so nao consigo listar em uma JTable.

Estou procurando como eu faço para fazer.

Se alguem puder me dar um help agradeço muito.

4 Respostas

H

Talvez isto ajude:

Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
	at sun.awt.Win32GraphicsConfig.getBounds(Native Method)
	at sun.awt.Win32GraphicsConfig.getBounds(Unknown Source)
	at java.awt.Window.init(Unknown Source)
	at java.awt.Window.<init>(Unknown Source)
	at java.awt.Frame.<init>(Unknown Source)
	at java.awt.Frame.<init>(Unknown Source)
	at javax.swing.JFrame.<init>(Unknown Source)
	at projeto_final.Filmes_Alterar_Cadastro.<init>(Filmes_Alterar_Cadastro.java:60)
	at projeto_final.Filmes_Alterar_Cadastro.<init>(Filmes_Alterar_Cadastro.java:62)
	at projeto_final.Filmes_Alterar_Cadastro.<init>
	at projeto_final.Filmes_Alterar_Cadastro.<init>
KamikazeBr

Essa é facil, você criou um loop infinito.
Observe que o nome da sua classe é “Filmes_Alterar_Cadastro” e extend de “JFrame”, e no construtor dessa sua classe linha 57.

Dentro dela na linha 59. Voce chama seu construtor novamente…logo voce entra num loop, sempre chamando seu construtor ^^

PS: Sua classe já extende Jframe, voce nao precisa associa-lo a outro JFrame.

H

Consegui resolver.

Decidi fazer do zero.

Obrigado pessoal!

KamikazeBr

hsam:
Consegui resolver.

Decidi fazer do zero.

Obrigado pessoal!

Mude o titulo e coloca [RESOLVIDO].
Ate++

Criado 19 de maio de 2012
Ultima resposta 20 de mai. de 2012
Respostas 4
Participantes 2