Enfoque os problemas com os diálogos modais java7 no mac osx

Eu tenho validado um aplicativo swing que é executado em um applet para mac osx.

Durante esta validação, encontrei os seguintes problemas com os diálogos modais:

Quando uma caixa de diálogo é aberta e é setModal (true), ela bloqueia o conteúdo da janela raiz, mas se você clicar em algum lugar na janela raiz, a caixa de diálogo ficará abaixo dela, mas deverá permanecer na parte superior da janela raiz.Se o diálogo tiver um JTextInputField, ele não receberá o foco mesmo quando você clicar nele.

Então eu criei um pequeno programa para mostrar o problema. Você pode por favor me ajudar a entender o que está errado aqui?

package com.macosx.tests;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class DialogExample extends JApplet{

    private static final long serialVersionUID = 1L;
    private JPanel panel;
    private JButton openDialogBtn;

    private void doStart() {
        panel = new JPanel();
        panel.setPreferredSize(new Dimension(500,500));

        openDialogBtn = new JButton("open dialog");
        openDialogBtn.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent arg0) {
                ModalDialog dialog = new ModalDialog(panel, true);
                dialog.setVisible(true);
            }

        });
        panel.add(openDialogBtn);
        setContentPane(panel);
    }


    class ModalDialog extends JDialog {
        private static final long serialVersionUID = 1L;

        public ModalDialog(Component parent, boolean modal) {
            Dimension dimensionParentFrame = parent.getSize();
            setSize(new Dimension((parent == null) ? 300 : dimensionParentFrame.width / 2, 75));

            setModal(modal);
            setModalityType(ModalityType.APPLICATION_MODAL);

            JTextField txtField = new JTextField();
            add(txtField, BorderLayout.CENTER);
        }
    }


    @Override
    public void start() {
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                public void run() {
                    doStart();
                }
            });
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

}

Use o acima para criar um arquivo .jar (test.jar). Feito isso, crie um arquivo html com o seguinte conteúdo:

<html>
<head>
<title>Dialog test Applet</title>
</head>
<body>
<applet id="DialogTestApplet" height="800" width="600"
  code="com.macosx.tests.DialogExample"
  archive="test.jar">
</applet>
</div>
</body>
</html>

Quando isso for feito, execute o arquivo html. Você verá um applet com um fundo cinza e com um botão. Então tente:

clique no botão para abrir a caixa de diálogo. Depois disso, clique em algum lugar na área cinza: a caixa de diálogo fica sob a janela do navegador, mas deve permanecer na parte superior, certo?clique no botão para abrir a caixa de diálogo. Depois disso, clique no campo de texto da caixa de diálogo e tente escrever algo: o diálogo de texto não recebe foco.

Então, o que estou fazendo errado aqui? Alguém com um computador mac pode testar isso, por favor?

obrigado

Especificações:

java.vendor    Oracle Corporation
java.version   1.7.0_07
os.name        Mac OS X
os.version     10.7.4

browser        firefox 15

OBSERVAÇÃO: observe que isso ocorre apenas quando o applet é executado no navegador e apenas no mac osx.

questionAnswers(9)

yourAnswerToTheQuestion