JDialog Modal entre classes de Packages Diferentes

1 resposta
K

Então Galera, minha primeira vez aqui.

seguinte to com um problema em utilizar o método setModel, tenho 4 classes sendo que 2 são de um pacote View e as outras São de um pacote Controle,
no pacote View tenho a classe 1 que vai ter um Frame principal e outra que tem um JDialog, no pacote Controle tenho as classes 3 e 4.
mais ou menos assim

package View;

import javax.swing.*;
import java.util.*;
import java.awt.*;

import java.awt.event.ActionListener; 

public class ViewFluxoDeCaixa{

	public JFrame janelaFluxo;
	public JButton entradas;
	public JButton saidas;
	public JButton agenda;
	public JButton sair;
	public JLabel lblFluxo;
	public JPanel painel;
	
	public ViewFluxoDeCaixa(){
		
		janelaFluxo = new JFrame();
		janelaFluxo.setTitle("Fluxo De Caixa");
		janelaFluxo.setExtendedState(JFrame.MAXIMIZED_BOTH);		
		janelaFluxo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		painel = new JPanel();
		painel.setLayout(null);
		painel.setBackground(new java.awt.Color(0, 0, 0));
		
		lblFluxo = new JLabel("Fluxo de Caixa");
		lblFluxo.setFont(new Font("Serif", Font.BOLD, 50));
		lblFluxo.setBackground(new java.awt.Color(255, 255, 255));
		lblFluxo.setBounds(190, 50, 500, 60);
		painel.add(lblFluxo);
		
		entradas = new JButton("Entradas");
		entradas.setFont(new Font("Serif", Font.BOLD, 25));
		entradas.setBounds(150, 200, 300, 35);
		painel.add(entradas);
		
		saidas = new JButton("Saídas");
		saidas.setFont(new Font("Serif", Font.BOLD, 25));
		saidas.setBounds(150, 300, 300, 35);
		painel.add(saidas);
		
		agenda = new JButton("Agenda Financeira");
		agenda.setFont(new Font("Serif", Font.BOLD, 25));
		agenda.setBounds(150, 400, 300, 35);
		painel.add(agenda);
		
		sair = new JButton("Sair");
		sair.setFont(new Font("Serif", Font.BOLD, 25));
		sair.setBounds(150, 600, 100, 35);
		painel.add(sair);
		
		janelaFluxo.add(painel);
		janelaFluxo.setVisible(true);
	}
	
	public void addEntradasListener(ActionListener a){ 
	
 		entradas.addActionListener(a);
		 
	}
	
	public void addSaidasListener(ActionListener a){ 
	
 		saidas.addActionListener(a);
		 
	}
	
	public void addAgendaListener(ActionListener a){ 
	
 		agenda.addActionListener(a);
		 
	}
	
	public void addSairListener(ActionListener a){ 
	
 		sair.addActionListener(a);
		 
	}
}
package Controle;


	
	import java.awt.event.ActionEvent; 
        import java.awt.event.ActionListener; 
        import java.util.Observable; 
	import javax.swing.JOptionPane;
	import View.*;
	

   public class ControleFluxoDeCaixa extends ViewFluxoDeCaixa{
   
      public ControleFluxoDeCaixa() 
      { 
         addEntradasListener(new EntradasListener()); 
         addSaidasListener(new SaidasListener());
         addAgendaListener(new AgendaListener());
         addSairListener(new SairListener()); 
      } 
		
      class EntradasListener implements ActionListener{ 
         public void actionPerformed(ActionEvent e) 
         { 
            new ControleEntradas();
         } 
      } 
		
		class SaidasListener implements ActionListener{ 
         public void actionPerformed(ActionEvent e) 
         { 
            JOptionPane.showMessageDialog(null,"Implementar");
         } 
      }
		class AgendaListener implements ActionListener{ 
         public void actionPerformed(ActionEvent e) 
         { 
            JOptionPane.showMessageDialog(null,"Implementar");
         } 
      } 
   	
		class SairListener implements ActionListener{ 
         public void actionPerformed(ActionEvent e) 
         { 
            System.exit(0);
         } 
      } 
		public static void main(String []args){
			
			new ControleFluxoDeCaixa();
			
		}
   }
package View;

import javax.swing.*;
import java.util.*;
import java.awt.*;

import java.awt.event.ActionListener; 

public class ViewEntradas extends JDialog{

	public JButton addEntrada;
	public JButton alterarEntrada;
	public JButton listarEntradas;
	public JButton excluirEntrada;
	public JButton confirmarEntrada;
	public JButton sairEntradas;
	public JLabel lblEntradas;
	public JPanel painel;
	
	public ViewEntradas(){
	
		setTitle("Entradas");
		setSize(800, 800);		
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		painel = new JPanel();
		painel.setLayout(null);
		painel.setBackground(new java.awt.Color(0, 0, 0));
		
		lblEntradas = new JLabel("Entradas");
		lblEntradas.setFont(new Font("Serif", Font.BOLD, 50));
		lblEntradas.setBackground(new java.awt.Color(255, 255, 255));
		lblEntradas.setBounds(150, 10, 500, 60);
		painel.add(lblEntradas);
		
		addEntrada = new JButton("Adicionar Entrada");
		addEntrada.setFont(new Font("Serif", Font.BOLD, 25));
		addEntrada.setBounds(100, 100, 300, 35);
		painel.add(addEntrada);
		
		alterarEntrada = new JButton("Alterar Entrada");
		alterarEntrada.setFont(new Font("Serif", Font.BOLD, 25));
		alterarEntrada.setBounds(100, 200, 300, 35);
		painel.add(alterarEntrada);
		
		listarEntradas = new JButton("Listar Entradas");
		listarEntradas.setFont(new Font("Serif", Font.BOLD, 25));
		listarEntradas.setBounds(100, 300, 300, 35);
		painel.add(listarEntradas);
		
		excluirEntrada = new JButton("Excluir Entrada");
		excluirEntrada.setFont(new Font("Serif", Font.BOLD, 25));
		excluirEntrada.setBounds(100, 400, 300, 35);
		painel.add(excluirEntrada);
		
		confirmarEntrada = new JButton("Confirmar Entrada");
		confirmarEntrada.setFont(new Font("Serif", Font.BOLD, 25));
		confirmarEntrada.setBounds(100, 500, 300, 35);
		painel.add(confirmarEntrada);
		
		sairEntradas = new JButton("Fechar");
		sairEntradas.setFont(new Font("Serif", Font.BOLD, 25));
		sairEntradas.setBounds(100, 700, 150, 35);
		painel.add(sairEntradas);
		
		add(painel);
		setVisible(true);
	}
	
	public void addAddEntradasListener(ActionListener a){ 
	
 		addEntrada.addActionListener(a);
		 
	}
	
	public void addAlterarEntradaListener(ActionListener a){ 
	
 		alterarEntrada.addActionListener(a);
		 
	}
        
        public void addListarEntradasListener(ActionListener a){ 
	
 		listarEntradas.addActionListener(a);
		 
	}
	
	public void addExcluirEntradaListener(ActionListener a){ 
	
 		excluirEntrada.addActionListener(a);
		 
	}
	
	public void addConfirmarEntradaListener(ActionListener a){ 
	
 		confirmarEntrada.addActionListener(a);
		 
	}
	
	public void addSairEntradasListener(ActionListener a){ 
	
 		sairEntradas.addActionListener(a);
		 
	}

}
package Controle;
	
	import java.awt.event.ActionEvent; 
   import java.awt.event.ActionListener; 
	import javax.swing.*;
	import View.*;
	

   public class ControleEntradas extends ViewEntradas{
   
      public ControleEntradas()
      { 
			super.setModal(true);
         addAddEntradasListener(new AddEntradasListener()); 
         addAlterarEntradaListener(new AlterarEntradaListener());
         addListarEntradasListener(new ListarEntradasListener());
			addExcluirEntradaListener(new ExcluirEntradaListener());
			addConfirmarEntradaListener(new ConfirmarEntradaListener());
         addSairEntradasListener(new SairEntradasListener()); 
      } 
		
      class AddEntradasListener implements ActionListener{ 
         public void actionPerformed(ActionEvent e) 
         { 
            JOptionPane.showMessageDialog(null,"Implementar");
         } 
      } 
		
		class AlterarEntradaListener implements ActionListener{ 
         public void actionPerformed(ActionEvent e) 
         { 
            JOptionPane.showMessageDialog(null,"Implementar");
         } 
      }
		class ListarEntradasListener implements ActionListener{ 
         public void actionPerformed(ActionEvent e) 
         { 
            JOptionPane.showMessageDialog(null,"Implementar");
         } 
      } 
   	
		class ExcluirEntradaListener implements ActionListener{ 
         public void actionPerformed(ActionEvent e) 
         { 
            JOptionPane.showMessageDialog(null,"Implementar");
         } 
      } 
   	
		class ConfirmarEntradaListener implements ActionListener{ 
         public void actionPerformed(ActionEvent e) 
         { 
            JOptionPane.showMessageDialog(null,"Implementar");
         } 
      } 
		
		class SairEntradasListener implements ActionListener{ 
         public void actionPerformed(ActionEvent e) 
         { 
            dispose();
         } 
      }

bom o codigo inteiro que fiz até agora ta aí

não estou achando um jeito de usar o setModal corretamente

tentei instanciando a classe2 com os parâmetros (Frame, String, Boollean) mas não consegui por ter que na classe3 chamar a classe2 e não a classe4 e assim não funcionando as ações dos botões.

como faço? se algume entender minha explicação o que acho difícil, quase que eu msm não entendo

1 Resposta

K

Bom Galera consegui resolver esse problema da seguinte maneira.

o construtor do JDialog assim

o construtor da classe controle do JDialog assim.

public ControleEntradas(JFrame janela, String titolo, boolean Modal) { super(janela, titolo, Modal); }

e na ação do botão que inicia a o construtor da classe controle assim

class EntradasListener implements ActionListener{ public void actionPerformed(ActionEvent e) { new ControleEntradas(janelaFluxo, "Entradas", true); } }

mas só que apareceu outro problema. quando o modal esta “true” as ações dos botões da janela JDialog não funionam, e quando esta “false” td volta ao normal e o JFrame que tinha que ser bloqueado também volta a ativa.

alguem sabe como resolver isso?

Criado 10 de março de 2013
Ultima resposta 10 de mar. de 2013
Respostas 1
Participantes 1