JSwing [RESOLVIDO]

10 respostas
mfidelis

Ola pessoal, esse é meu primeiro topico, preciso de ajuda, entao vamos lá:

estou criando uma aplicaçao que usa JDialogs, e tem um menu principal onde eu chamo essas JDialog
cada parte da aplicação fica em uma classe diferente,
quando eu chamo a classe para a tela de Cadastro por mais de um botao, a tela aparece vazia : Ex:

Cadastro telaCadastro = new Cadastro()
[...]

if (e.getSource()== menuCadastro)
		{
				telaCadastro.setVisible(true);
					
		}

if(e.getSource()== menuBarCadastro)
{
                                telaCadastro.setVisible(true);
}

A TELA APARECE VAZIA…

o que eu faço para que toda a vez que eu clicar no botao menuCadastro ou outro que tenha o mesmo Action, apareça a JDialog Cadastro() sem que a tela fique branca??

ps: minha classe Cadastro estende JDialog

10 Respostas

yhhik
if (e.getSource()== menuCadastro)   
        {   
                TelaCadastro  telaCadastro=new  TelaCadastro();
                telaCadastro.setVisible(true);
        
}
mfidelis

YHHIK,
Agora aparece os dois, mas qudo eu clico sobre o segundo o conteudo some…
tem algum jeito de fechar a que ja esta aberta quando eu clicar sobre o botao?

yhhik

colega vc pode postar o codigo do seu JDialog?

mfidelis
package Estoque;

import java.sql.*;

import javax.swing.*;
import javax.swing.border.*;

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

class Cadastro extends JDialog implements ActionListener
{

  /**
   * @author Michael Alexader
   * @category Comercial
   */
	private static Cadastro Instance = null;
	private static final long serialVersionUID = 1L;
	static ImageIcon Icon = new ImageIcon("book.png");
	static JLabel LCodProduto, LNomeProduto, LNomeFornecedor;
	static JButton btGravar,btExcluir,btNovo,btLocalizar, btCancelar;
	static JTextField tfCodProduto,tfNomeProduto, tfNomeFornecedor;
	static JPanel painel1 = new JPanel();	
	static JPanel painel2 = new JPanel();		
	static String Produtos = "select * from produto";
    Tabela table	=	new Tabela("SELECT * FROM Produto ORDER BY codProduto");

  public Cadastro()
  {   
	  try
	  {
	  setTitle("Cadastro de Produtos: ");
	  setBounds(200,100,570,230);
	  setResizable(false);
	  setVisible(false);
	  setLayout(new BorderLayout());
	  setUndecorated(true);
	  getRootPane().setWindowDecorationStyle(1);
	  setIconImage(Icon.getImage());
	  setDefaultCloseOperation(DISPOSE_ON_CLOSE);

	painel1.setLayout(null);
	painel1.setBorder(new TitledBorder("Digite os Dados: "));
	
    painel2.setLayout(new FlowLayout(FlowLayout.CENTER));
    LCodProduto				= new JLabel("Codigo do Produto: ");
    LNomeProduto 			= new JLabel("Nome do Produto:");
    LNomeFornecedor			= new JLabel("Nome do Fornecedor:");
    tfCodProduto 			= new JTextField(10);
    tfNomeProduto 			= new JTextField(25);
    tfNomeFornecedor		= new JTextField(20);
    btGravar				= new JButton("Gravar");          
    btExcluir				= new JButton("Excluir");
    btLocalizar				= new JButton("Localizar");
    btNovo					= new JButton("Novo");		btNovo.setSelected(true);
    btCancelar				= new JButton("Cancelar");

    tfCodProduto			.addActionListener(this); 
    btGravar				.addActionListener(this);
    btExcluir				.addActionListener(this);
    btLocalizar				.addActionListener(this);
    btNovo					.addActionListener(this);
    btCancelar				.addActionListener(this);
    
    painel1.add(LCodProduto);    		painel1.add(tfCodProduto);   
    painel1.add(LNomeProduto);      	painel1.add(tfNomeProduto); 
    painel1.add(LNomeFornecedor);		painel1.add(tfNomeFornecedor);
   
    painel2.add(btNovo);        		painel2.add(btLocalizar);
    painel2.add(btGravar);       
    painel2.add(btExcluir);     		painel2.add(btCancelar);
    Tabela.Scroller.setBounds(230,20,320,130);
    painel1.add(Tabela.Scroller);
    
    
    LCodProduto			.setBounds(20,22,200,20);			tfCodProduto		.setBounds(20,40,100,20);		
    LNomeProduto		.setBounds(20,57,200,20);			tfNomeProduto		.setBounds(20,75,200,20);		
    LNomeFornecedor		.setBounds(20,92,200,20);			tfNomeFornecedor	.setBounds(20,110,200,20);
    setTexts(true, false, false);
    add("Center", painel1);
    add("South", painel2);

    setBotoes(true,true,false,false,false);
	  }
	  catch (Exception ex)
	  {
		JOptionPane.showMessageDialog(null,"Erro");
	  }
    if (!BD.getConnection())
    {
      JOptionPane.showMessageDialog(null, "Falha na conexão, o sistema será fechado!");
      System.exit(0);
    }
    
  }    
 

  public void actionPerformed(ActionEvent e)
  {
   	if (e.getSource()==btNovo)						//Configuração de ação do botão NOVO
    {
      setBotoes(false,false,true,false,true);
      setTexts(true, true, true);
     
      limpaCampos();
      tfCodProduto.requestFocus();
      table.atualizaBD("SELECT * FROM Produto");
      return;
    }
   	if (e.getSource()==btCancelar)					//Configuração de ação do botão CANCELAR
    {
      setBotoes(true,true,false,false,false);
      setTexts(true, false, false);
      limpaCampos();
      table.atualizaBD("SELECT * FROM Produto");
   	  return;
    }
   	if (e.getSource()==btGravar)					//Configuração de ação do botãO GRAVAR
   	{
   	   String sql = "";
   	   if (e.getSource()==btGravar)
   	   {     		   
         sql = "INSERT INTO Produto (codProduto,nomeProduto, nomeFornecedor) Values ('" + tfCodProduto.getText() + "','" + tfNomeProduto.getText() + "','" + tfNomeFornecedor.getText() + "')"; 
   	   }   

       int result = BD.runSQL(sql);
       if (result==1)
       {	   
           setBotoes(true,true,false,false,false);
           setTexts(true, false, false);
           table.atualizaBD("SELECT * FROM Produto");
           limpaCampos();
       }    
       else
    	   JOptionPane.showMessageDialog(null,"Problemas na operação!\n verifique se você digitou os campos corretamente!", "Falhou...", JOptionPane.WARNING_MESSAGE);
       BD.setResultSet(Produtos);
    } 
   	if (e.getSource()==btExcluir)					//Configuração de ação do botão EXCLUIR
   	{
      String sql = "SELECT codProduto, nomeProduto, nomeFornecedor FROM Produto Where codProduto = '"+tfCodProduto.getText()+"'";
      BD.setResultSet(sql);
      String nome = "";
      try
      {
        BD.resultSet.next();
        nome = "Deletar o Produto:\n " + BD.resultSet.getString("nomeProduto");
   	  }
   	  catch(SQLException ex1)
   	  {
        JOptionPane.showMessageDialog(null,"Produto não cadastrado!");
        tfCodProduto.requestFocus();
        BD.setResultSet(Produtos);
        return;
      }  
   	  int n = JOptionPane.showConfirmDialog(null,nome," Excluir...",JOptionPane.YES_NO_OPTION);
      if (n==JOptionPane.YES_OPTION)
   	  {
   	    sql = "DELETE FROM Produto Where codProduto = '" + tfCodProduto.getText() + "'";
  	    int r = BD.runSQL(sql);
  	    if (r==1)
  	    {
  	      table.atualizaBD("SELECT * FROM Produto");
  	    }
          else
          JOptionPane.showMessageDialog(null,"Não foi possível excluir o Produto");
        limpaCampos();
        setBotoes(true,true,false,false,false);
      } 	
      BD.setResultSet(Produtos);
    }      
    if (e.getSource()==btLocalizar)				
   	{
      try
   	  {
   	   	String sql = "SELECT * FROM Produto Where codProduto = '" + tfCodProduto.getText() + "'";
   	    BD.setResultSet(sql);
        if (BD.resultSet.next())
        {
          atualizaCampos();
          tfNomeProduto.requestFocus();
          setBotoes(true,true,false,true,false);
        }
        else
        {	
          JOptionPane.showMessageDialog(null,"Produto não Encontrado!");
          tfCodProduto.requestFocus();
          BD.setResultSet(Produtos);
        }  
      }
   	  catch(Exception erro) {}  
   	}      
  }	
  public static void limpaCampos() 
  {
	 tfCodProduto.setText("");
     tfNomeProduto.setText("");
     tfNomeFornecedor.setText("");
     
  }	
  public void atualizaCampos()
  {
    try
    {
     tfCodProduto.setText(BD.resultSet.getString("codProduto"));
      tfNomeProduto.setText(BD.resultSet.getString("nomeProduto"));
      tfNomeFornecedor.setText(BD.resultSet.getString("nomeFornecedor"));
      }
    catch(SQLException erro) { }
  }
  public void setBotoes(boolean bNovo,boolean bLocalizar,boolean bGravar,boolean bExcluir,boolean bCancelar)
  {
  	btNovo.setEnabled(bNovo);
  	btLocalizar.setEnabled(bLocalizar);
  	btGravar.setEnabled(bGravar);
  	btExcluir.setEnabled(bExcluir);
  	btCancelar.setEnabled(bCancelar);
  }
  public void setTexts(boolean Codigo, boolean Nome, boolean Fornecedor)
  {
	  tfCodProduto.setEditable(Codigo);
	  tfNomeProduto.setEditable(Nome);
	  tfNomeFornecedor.setEditable(Fornecedor);
	  
  }
  public static void main(String[] args)
  {
	  Cadastro Cadastro = null;
	 if(Cadastro.isShowing() == false)
	 {
	 Cadastro  = new Cadastro();	
	 }
  }
}
yhhik

essa é somente sua tela de cadastro né?

se vc está instanciando ela a partir de outra tela vc nao precisa disso:

public static void main(String[] args)   
  {   
      Cadastro Cadastro = null;   
     if(Cadastro.isShowing() == false)   
     {   
     Cadastro  = new Cadastro();       
     }   
  }

isso que está abrindo sua segunda tela…
somente sua tela principal deve ter o metodo main.

mfidelis

Bom agora ta assim (essa é a classe Cadastro, de onde eu chamo o JDialog)

public static void main(String[] args)
  {
	 new Cadastro();	
	 
  }

e faço a chamada assim:

if (e.getSource()== menuCadastro)
		{
			Cadastro	telaCadastro 	=	new Cadastro();  
			telaCadastro.setVisible(true);
					
		}

mas continua do mesmo jeito… tipo queria fazer com que nao abrissem as duas ao mesmo tempo…tem como?
tipo eu clico em um botao e ai abre a telaCadastro, e se eu clicar eu outro sem fechar a telaCadastro que ja esta aberta, ele nao pode abrir outra…

yhhik

Colega…
vc tem uma tela principal onde vc chama todos os outros Form’s né?
deixe o metodo main apenas nela.

na ação que vc chama a tela de cadastrar, deixe assim:

if (e.getSource()== menuCadastro)   
    {   
         new Cadastro();     
        
                   
    }

e no seu JDialog substitua isso setVisible(false); por issosetVisible(true);

mfidelis

Oooo…vlw colega…consegui aqui…

Caraba, era tao facil… Vou mergulhar no livro do JG ate aprender…

mfidelis

Entao… Desculpa a ignorancia de minha parte, mas como eu encerro o topico?

yhhik

so escreva resolvido do título

att

Criado 30 de outubro de 2011
Ultima resposta 31 de out. de 2011
Respostas 10
Participantes 2