Desenvolvi um teste do problema que tenho:
[code]import java.awt.;
import java.awt.event.;
import javax.swing.*;
public class PaiFrame extends JFrame {
private JFrame internal;
public PaiFrame() {
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
Dimension size = new Dimension(300, 300);
setPreferredSize(size);
setMinimumSize(size);
setLocation(new Point(0, 0));
setLayout(new BorderLayout());
JButton button = new JButton("Vamos abrir uma nova janela");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (internal != null) {
internal.dispose();
}
internal = new FilhoFrame(PaiFrame.this);
internal.setVisible(true);
}
});
add(button, BorderLayout.CENTER);
setVisible(true);
requestFocusInWindow();
}
@Override
public void dispose() {
if (internal != null) {
internal.dispose();
}
super.dispose();
}
public static void main(String[] args) {
new PaiFrame();
}
}
class FilhoFrame extends JFrame {
public FilhoFrame(JFrame paiFrame) {
setPreferredSize(paiFrame.getPreferredSize());
setMinimumSize(paiFrame.getMinimumSize());
setLayout(new BorderLayout());
Point location = paiFrame.getLocation();
setLocation(location.x + 100, location.y + 100);
JButton button = new JButton("Vamos agora abrir um dialog");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(FilhoFrame.this, "Será que ainda temos duas janelas no taskbar?");
}
});
add(button, BorderLayout.CENTER);
}
}[/code]
O problema acontece no gnome:
Rodando este código, abro as duas janelas conforme as chamadas dos botões, elas aparecem na barra de tarefas (gnome-panel), mas abrindo o dialogo a janela responsável pelo dialogo some da barra.
Testei no KDE e as janelas não somem, testei numa versão do Java Environment Desktop (gnome da sun) e também não some, apenas some enquanto o dialogo está ativo, mas volta.
Agora, alguém já teve um tipo de problema desse?
Espero ter sido claro.