3

Java Swing ダイアログを作成しようとしていますが、現在フォーカスされているものからフォーカスを外すダイアログを作成したくありません。したがって、たとえば、単語 doc を編集していて、別のアプリケーションでダイアログが作成された場合、ダイアログは表示されますが、編集を続けることができるように、単語 doc にフォーカスしたままにする必要があります。

Mac OSX と Ubuntu 12.04 で次のコードをテストしました。Mac では、コードは、私が望むようにフォーカスを取得しないダイアログを作成します。Ubuntu では、ダイアログがフォーカスされ、作成中は入力できません。

これがオペレーティングシステム固有のものではないことを本当に願っています。すべてのプラットフォーム (または少なくとも Ubuntu) で私がやろうとしていることを達成する方法はありますか?

import javax.swing.*;
import java.awt.Color;
import java.util.Random;

public class Focus {
    private static Random r = new Random();

    public static void main(String[] args) {
        while(true) {   
            try {
                Thread.sleep(500);
                createObject(r.nextInt(1000), r.nextInt(600));
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public static void createObject(int x, int y) {
        JDialog testDialog = new JDialog();
        testDialog.setSize(50, 50);
        testDialog.setLocation(x, y);
        testDialog.setAlwaysOnTop(true);
        testDialog.setUndecorated(true);
        testDialog.setFocusable(false);
        testDialog.setEnabled(false);
        testDialog.setVisible(true);
    }
}
4

1 に答える 1

4

多分:

testDialog.setFocusableWindowState(false);
于 2013-02-03T00:48:55.007 に答える