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);
}
}