Boa tarde a todos!
Gostaria de saber como faço para esconder um JFrame sem matar o processo, pois toda vez que utilizo o setVisible() ou o show() / hide() ele mata o processo (JTable carregada)…
Alguém tem uma idéia?
Boa tarde a todos!
Gostaria de saber como faço para esconder um JFrame sem matar o processo, pois toda vez que utilizo o setVisible() ou o show() / hide() ele mata o processo (JTable carregada)…
Alguém tem uma idéia?
Hum…o setVisible(false) não devia terminar o processo, digo eu.
De qualquer forma podes tentar assim:
janela.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
Espero ter sido útil
Pois é, estou justamente fazendo isso, é que estou colocando o setVisible(false) no evento de minimizar, pois estou usando o System Tray, dai quando clico no PopupMenu para mostrar (setVisible(true), o processo volta do inicio.
=/
Posta aí o teu código, assim é melhor para ajudar.
Bem, vou postar as partes relevantes:
*Quando eu clico no trayIcon sem minimizar a janela, ele abre uma nova igual…
Main.java:
[code]
public static void main(String[] args) throws AWTException {
SplashScreen.Splash splash = new SplashScreen.Splash(5000);
splash.iniciarSplash();
new JanelaPrincipal().setVisible(true);
new Bandeja().carregarBandeja();
}[/code]
JanelaPrincipal.java:
[code]public JanelaPrincipal() {
initComponents();
setLocationRelativeTo(null);
setExtendedState(MAXIMIZED_BOTH);
Image imageIcon = new ImageIcon(getClass().getResource("/Imagens/icone.gif")).getImage();
setIconImage((Image) imageIcon);
ConnectionFactory.getConnection();
GregorianCalendar calendar = new GregorianCalendar();
SimpleDateFormat formatador = new SimpleDateFormat("dd' de 'MMMMM' de 'yyyy' '");
jLabelData.setText(formatador.format(calendar.getTime()));
FormatarTabelas.alinhar();
AtualizarDados.detalhes();
}
private void formWindowIconified(java.awt.event.WindowEvent evt) {
setVisible(false);
} [/code]
Bandeja.java:
[code]trayIcon.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2 && e.getButton()==MouseEvent.BUTTON1) {
JanelaPrincipal janela = new JanelaPrincipal();
janela.setVisible(true);
}
}
});[/code]
OK, acontece isto porque tu mandas criar uma nova janela de cada vez que se clica no tray:
//bandeja.java
JanelaPrincipal janela = new JanelaPrincipal();
Posto isto, ao clicares no ícone da tray não estás a exercer qualquer acção na janela principal.
Sugestão: Atribui um nome á instância de JanelaPrincipal que crias no método main
JanelaPrincipal janela = new JanelaPrincipal().setVisible(true); //Em vez de new JanelaPrincipal().setVisible(true);
Agora já podes manipular(mais facilmente) a janela pretendida.
Sugestão nº2: Direcciona o evento do tray para a janela principal corrente.
trayIcon.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2 && e.getButton()==MouseEvent.BUTTON1) {
janela.setVisible(false);
}
}
});
Tenta desta forma.
Perfeito! Isso mesmo!
Primeiro eu coloquei no main para iniciar apenas a Bandeja, depois pela bandeja eu iniciava a JanelaPrincipal e coloquei como você falou, dai funcionou perfeitamente!
vlw pela ajuda!!!