8

私のアプリケーションは、実行時間の長いタスクを起動する機能を提供しています。JDialogこれが発生すると、タスクの進行状況を示すモードレスが生成されます。具体的には、ダイアログをモードレスにして、タスクの実行中にユーザーが残りの GUI を操作できるようにします。

私が直面している問題は、ダイアログがデスクトップ上の他のウィンドウの後ろに隠れると、見つけるのが難しくなることです: タスク バー (Windows 7 の場合) に対応する項目がなく、Alt+ キーの下にアイコンが表示されないタブメニュー。

この問題を解決する慣用的な方法はありますか? WindowListenerアプリケーションに を追加することを検討し、JFrameこれを使用して JDialog を前面に表示しました。ただし、これはイライラする可能性があります (おそらく、JFrame がフォーカスを失うことを意味するため)。

4

1 に答える 1

8

非モーダル ダイアログを作成し、それに親フレーム/ダイアログを与えることができます。親フレーム/ダイアログを表示すると、非モーダル ダイアログも表示されます。

次のようなものがこれを示しています。

public static void main(String[] args) throws IOException {
    JFrame frame = new JFrame();
    frame.setTitle("frame");
    JDialog dialog = new JDialog(frame, false);
    dialog.setTitle("dialog");
    final JButton button = new JButton("Click me");
    button.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(button, "Hello");
        }
    });
    final JButton button2 = new JButton("Click me too");
    button2.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(button2, "Hello dialog");
        }
    });
    frame.add(button);
    dialog.add(button2);
    frame.pack();
    dialog.pack();
    frame.setVisible(true);
    dialog.setVisible(true);
}
于 2012-04-11T14:20:49.200 に答える