当JDialog中的按钮位于其他两个模态弹出窗口之上时,它们不可点击

时间:2017-07-13 13:13:42

标签: java swing jdialog jwindow

我有一个swing应用程序。我有一个Window,应该在点击几个文本字段时显示。(它就像一个键盘很少的虚拟键盘)。 该窗口是使用

创建的
Window wdw= new JDialog();

它也设置为模态。 ((JDialog) wdw).setModal(true);

键添加了鼠标侦听器。单击并按住键时,它会显示另一个显示额外几个按钮的JDialog。

下面是创建该窗口的方法,该窗口在按住键时被调用。

private void createPopupKeys(MouseEvent e) {
    JButton keyBtn = (JButton)e.getSource();
    Window parentWindow = SwingUtilities.windowForComponent(keyBtn);
    Window dialog = new JDialog(parentWindow);
    dialog.setFocusable(true);
    dialog.setFocusableWindowState(true);

    JPanel contP = (JPanel)((JDialog) dialog).getContentPane();
    contP.setPreferredSize(new Dimension(150, 40));
    JPanel pnl = new JPanel();

    String[][] popupKeys = {{"123","123","123"},
                            {"124","124","196"},
                            {"125","125","197"},
                            {"126","126","198"},
                            };
    for (int i = 0; i < popupKeys.length; i++) {
        JButton btn = new JButton(popupKeys[i][0]);
        btn.setActionCommand(popupKeys[i][2]);
        btn.setName("popupkey"+i);
        btn.addMouseListener(this);
        btn.setMinimumSize(new Dimension(30, 30));
        btn.setPreferredSize(new Dimension(30, 30));
        btn.setFocusable(false);
        btn.setFont(new Font("Dialog", Font.BOLD, 14));
        pnl.add(btn);
    }

    pnl.setPreferredSize(new Dimension(150, 40));
    contP.add(pnl);
            dialog.setAlwaysOnTop(true);
    Point loc = keyBtn.getLocationOnScreen();
    dialog.setLocation(loc.x - 20 , loc.y - 50);
    dialog.pack();

    dialog.setVisible(true);

    dialog.addWindowFocusListener(windowListener);
    dialog.addWindowListener(windowListener);
}

WindowAdapter windowListener = new WindowAdapter() {
    @Override
    public void windowLostFocus(WindowEvent e) {
        JDialog dialog = (JDialog) e.getSource();
        dialog.setVisible(false);
        dialog.dispose();
    }
};

在普通窗口中,当我单击文本字段时,将打开模态窗口,按住某个键后,将打开新的弹出键对话框,并且所有对话框都可以单击。

但是当我点击模态弹出窗口中的文本字段时,窗口会打开,按住某个键时,也会显示弹出键。但是弹出键中没有按钮可以点击。

可能是什么原因?最新解决方案是什么?

0 个答案:

没有答案