Hasitha Jayawardana:
私は現在、デジタル時計ウィジェットを開発しています。私が使用して設計したJPanelのフォームをし、それを追加しますJDialogの。ここでは、コードです。
static JDialog jDialog = new JDialog();
public static void main(String[] args)
{
jDialog.setUndecorated(true);
jDialog.add(new QuickLauncher());
jDialog.pack();
jDialog.setBackground(new Color(0, 255, 0, 0));
jDialog.setLocationRelativeTo(null);
jDialog.setVisible(true);
}
私はそれが2つのウィンドウが開き、二回このプログラムを実行すると問題があります。それでは、私に必要なのは、私が実行するためのウィンドウを1つだけ必要があると私はもう一度プログラムを実行しているのではなく、もう一度プログラムを実行した場合、それはアプリケーションを集中する必要があります。私のような様々な例や方法を試してみましたisVisible()
し、isActive()
私はこの問題を解決するためにどのようにそれを把握することはできません。また、私はこれを試してみました、
誰も私を助けることができるしてください?前もって感謝します。
apetranzilla:
これを行うには、特にきれいな方法はありません。あなたはJavaの9を使用することができるしている場合は、とのすべてのプロセスのリストを取得するには、新しいプロセスのAPIを使用することができますProcessHandle.allProcesses()
し、あなたのプログラムに一致するものを検索しますが、そうでなければ、プラットフォーム依存の行動に頼る必要があると思います。
(ジャワ9を必要としない)別の方法では使用することでFileLockを。その後、(上記のリンクをご覧ください)。それをロックし、既知の場所にファイルを作成します。ときにJVMシャットダウンし、ロックが解除されます。あなたのプログラムが起動したら、そのファイルがあなたのプログラムがすでに実行されているかどうかを判断するためにロックされているかどうかを確認することができます。