同様の質問をした他の人のように、JFileChooser ダイアログ ボックスの生成コードが生成されていることに気付くまで「修正」しようとして気が狂いましたが、他のすべてのウィンドウの下に表示され、関連するタスクバー アイコンがありません。 (そのため、それが存在するという手がかりはまったくありませんでした!)。
私はこれらの同様の質問を認識しています:
...しかし、これらの質問に対する答えは非常に複雑で、GUI 要素をさらに作成する必要があり、それが必要になるとは思えません。
ここで、コンソールと Swing インターフェースを混在させないというアドバイスも承知していますが、できる限りシンプルに保ちたいと考えています。
他の GUI 要素 (JPanel など) を作成せずに、他のウィンドウの上にある JFileChooser (showOpenDialog) ダイアログ ボックスを生成する方法を知りたいです。
注 1: このサイトでは解決策が議論されているようですが、理解するのは困難です。
注2:私が求めていることが不可能な場合は、少なくともダイアログボックスにタスクバーアイコンを与える方法に関する情報が素晴らしいでしょう(これも親を持つ必要はありません)。
現在、埋め込みダイアログボックスを作成している私のコードは次のとおりです。
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
class Client {
String currentDirectoryFolderPath = "H:\\myFolder";
javax.swing.JFileChooser jFileChooser =
new JFileChooser(currentDirectoryFolderPath);
jFileChooser.setVisible(true); //defaults to invisible?!?
javax.swing.filechooser.FileNameExtensionFilter fileExtensionFilter
= new FileNameExtensionFilter(
comma-separated values and text files",
"csv", "txt");
jFileChooser.setFileFilter(fileExtensionFilter);
//int returnVal = jFileChooser.showOpenDialog(jFileChooser);
//jFileChooser.showDialog(null, "testing 1--2--3");
//jFileChooser.requestFocusInWindow();
//jFileChooser.requestFocus();
//jFileChooser.showOpenDialog(null);
//jFileChooser.requestFocus();
int returnVal = jFileChooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: " +
jFileChooser.getSelectedFile().getName());
}
System.out.println(JFileChooser.APPROVE_OPTION);
System.out.println(jFileChooser);
}
コメントされたコードは、私が試した中でうまくいかなかったすべてのものです。
- ダイアログ ボックスを呼び出す前後のさまざまな種類のフォーカス要求、および
- null を渡す代わりに、ダイアログ ボックス オブジェクト自体を独自の親として指定します (これは試してみる価値があると思いました)。