Propriedades Da Janela - WindowListener

5 respostas
M

Olá Pessoal Pesso uma ajudinha aki
criei um windowListener Para saber quando a janela eh minimizada ou maximizada mas não funciona !
Nunca usei o WindowListener antes Então axo que tem alguma coisa errada.
Por Favor Ajudem-me !
segue abaixo o código

public class MAIN {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new Init();
	}
}
class Init extends JFrame{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JButton btnLocar, btnLocados, btnVender, btnVendas, btnCliente, btnEstoque, btnReservas, btnSair;
	private JPanel painelBtns;
	private JMenuBar barra;
	private JMenu arq, avan;
	private JMenuItem login, locar, cliente, estoque, sair;
	private JMenuItem  confBD, operador, configProg;
	Init(){
		painelBtns = new JPanel();
		painelBtns.setLayout(new BoxLayout(painelBtns,BoxLayout.Y_AXIS));
		btnLocar = new JButton("Locar Filme");
		btnLocar.setSize(40, 30);
		btnLocar.addActionListener(new ActionsInit());
		btnLocar.setToolTipText("Cria Nova Locação Usando Um Usuário Já Existente No Banco de Dados");
		
		btnLocados = new JButton("Filmes Locados");
		btnLocados.setSize(40, 30);
		btnLocados.addActionListener(new ActionsInit());
		btnLocados.setToolTipText("Mostra A Lista De Filmes Locados");
		
		btnVender = new JButton("Vender Filme");
		btnVender.setSize(40, 30);
		btnVender.addActionListener(new ActionsInit());
		btnVender.setToolTipText("Mostra A Lista De Filmes Disponíveis Para A Venda");
		
		btnVendas = new JButton("Vendas");
		btnVendas.setSize(40, 30);
		btnVendas.addActionListener(new ActionsInit());
		btnVendas.setToolTipText("Mostra Os Últimos 10 Filmes Vendidos");
		
		btnCliente = new JButton("Clientes");
		btnCliente.setSize(40, 30);
		btnCliente.addActionListener(new ActionsInit());
		btnCliente.setToolTipText("Mostra A Lista De Clientes Com Base Em Registros Do Banco De Dados");
		
		btnEstoque = new JButton("Estoque");
		btnEstoque.setSize(40, 30);
		btnEstoque.addActionListener(new ActionsInit());
		btnEstoque.setToolTipText("Mostra A Lista De Filmes Disponíveis No Estoque");
		
		btnReservas = new JButton("Reservas");
		btnReservas.setSize(40, 30);
		btnReservas.addActionListener(new ActionsInit());
		btnReservas.setToolTipText("Mostra A Lista De Filmes Reservados Ou Cria Uma Nova Reserva");
		
		btnSair  = new JButton("Sair");
		btnSair.setSize(40, 30);
		btnSair.addActionListener(new ActionsInit());
		btnSair.setToolTipText("Encerra O Programa");
		
		painelBtns.add(btnLocar);
		painelBtns.add(btnLocados);
		painelBtns.add(btnLocados);
		painelBtns.add(btnVender);
		painelBtns.add(btnVendas);
		painelBtns.add(btnCliente);
		painelBtns.add(btnEstoque);
		painelBtns.add(btnReservas);
		painelBtns.add(btnSair);
		
		barra = new JMenuBar();
		arq = new JMenu("Arquivo");
		avan = new JMenu("Avançado");
		
		login = new JMenuItem("Login");
		login.addActionListener(new ActionsInit());
		
		locar = new JMenuItem("Locar");
		locar.addActionListener(new ActionsInit());
		
		cliente = new JMenuItem("Cliente");
		cliente.addActionListener(new ActionsInit());
		
		estoque = new JMenuItem("Estoque");
		estoque.addActionListener(new ActionsInit());
		
		sair = new JMenuItem("Sair");
		sair.addActionListener(new ActionsInit());
		
		confBD = new JMenuItem("Banco De Dados");
		confBD.addActionListener(new ActionsInit());
		
		operador = new JMenuItem("Operador");
		operador.addActionListener(new ActionsInit());
		
		configProg = new JMenuItem("Configuração Do Programa");
		configProg.addActionListener(new ActionsInit());
		
		arq.add(login);
		arq.addSeparator();
		arq.add(locar);
		arq.add(cliente);
		arq.add(estoque);
		arq.addSeparator();
		arq.add(sair);
		barra.add(arq);
		avan.add(confBD);
		avan.addSeparator();
		avan.add(operador);
		avan.addSeparator();
		avan.add(configProg);
		barra.add(avan);
		
		getContentPane().add(barra,BorderLayout.PAGE_START);
		getContentPane().add(painelBtns);
		setVisible(true);
		setSize(600,450);
		setLocationRelativeTo(null);
		setTitle("LocaEx - Locação Express");
	}
	class ActionsInit implements ActionListener{
		public void actionPerformed(ActionEvent a) {
			if(a.getSource()==btnLocar){
				
			}if(a.getSource()==btnCliente){
				
			}if(a.getSource()==btnEstoque){
			
			}if(a.getSource()==btnReservas){
				
			}if(a.getSource()==btnSair){
				int v;
				v = JOptionPane.showConfirmDialog(null, "Deseja Sair Do Programa Gerenciador De Locadora?","Sair", JOptionPane.YES_NO_OPTION);
				if(v==0){
					System.exit(1);
				}				
			}if(a.getSource()==login){
				
			}if(a.getSource()==locar){
				
			}if(a.getSource()==cliente){
				
			}if(a.getSource()==estoque){
				
			}if(a.getSource()==sair){
				int i;
				i = JOptionPane.showConfirmDialog(null, "Deseja Sair Do Programa Gerenciador De Locadora?","Sair", JOptionPane.YES_NO_OPTION);
				if(i==0){
					System.exit(1);
				}				
			}if(a.getSource()==confBD){
				setVisible(false);
				new EscolhaBD();
				
			}if(a.getSource()==operador){
				
			}if(a.getSource()==configProg){
				
			}
		}
		
	}
	class JanPropInit implements WindowListener{
		public void windowActivated(WindowEvent a) {}
		public void windowClosed(WindowEvent a) {}
		public void windowClosing(WindowEvent fexnd) {
			int f;
			f = JOptionPane.showConfirmDialog(null, "Deseja Sair Do Programa Gerenciador De Locadora?","Sair", JOptionPane.YES_NO_OPTION);
			if(f==0){
				System.exit(1);
			}
		}
		public void windowDeactivated(WindowEvent a) {}
		public void windowDeiconified(WindowEvent a) {}
		public void windowIconified(WindowEvent a) {
			new minimized();
		}
		public void windowOpened(WindowEvent arg0) {}
	}
}

5 Respostas

M

A Classe JanPropInit eh a classe que implementa o WindowListener;
a ultima pra ser mais exato
axei melhor mostrar como o código funciona por isso ficou tão extenso.
Desculpem-me
a minha duvida seria mais a seguinte!
Preciso dizer na classe que eu quero q use o WindowListener que ela deve usa-lo e que ele está em “tal” lugar?
Obrigado

B

Ola,

Para vc tratar estes dois eventos, é necessário vc trata-los em : void windowDeiconified(WindowEvent e) Invoked when a window is changed from a minimized to a normal state. void windowIconified(WindowEvent e) Invoked when a window is changed from a normal to a minimized state.
Do java.awt.event.WindowsListener.

M

Os Imports tão normais !
ta tudo certo!
mas não consigo fazer funcionar
não sei se precisa citar pro metodo contruto q herda o JFrame onde axar as ações pra janela !
mas agradeço a sua ajuda!
se puder ajudar-me denovo agradeço!
Abraço

J

Se você não adicionar o listener ao JFrame não adianta.

addWindowListener(new JanPropInit());
M

Opa!!
blz!!
funcionou aki!!!
valeu jairelton!
agora eu tenho mais um problema
quero que quando o usuario minimize a janela o programa fike no System Tray.
criei uma nova classe com o nome de minimized
essa classe por sua vez faz com que o aplicativo vá para o system tray. Porém ela não é executada.
segue o codigo abaixo

class minimized{
	minimized(){
	TrayIcon icon = new TrayIcon(getImage(), "LocaEx - Locação Espressa\nAguardando..", createPopupMenu());
    icon.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
          new Init();
       }
    });
    }
    private static Image getImage() throws HeadlessException {
        Icon defaultIcon = MetalIconFactory.getTreeHardDriveIcon();
        Image img = new BufferedImage(defaultIcon.getIconWidth(), 
              defaultIcon.getIconHeight(), BufferedImage.TYPE_BYTE_GRAY);
        defaultIcon.paintIcon(new Panel(), img.getGraphics(), 0, 0);
        return img;
     }
    private static PopupMenu createPopupMenu() throws HeadlessException {
        PopupMenu menu = new PopupMenu();
        MenuItem exit = new MenuItem("Exit");
        exit.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
              System.exit(0);
           }
        });
        menu.add(exit);
        return menu;
	
    }
}

os import’s estão ok tbm!
a classe até funciona
mas separadamente
o que pode estar errado??
Agradeço a todos que me ajudaram!
abraço
[/code]

Criado 8 de maio de 2007
Ultima resposta 9 de mai. de 2007
Respostas 5
Participantes 3