私は、ユーザーが jfilechooser を介してアップロードするファイルを選択する必要がある Java のプロジェクトに取り組んでいます。とにかくテキストフィールドを読み取り専用にして、テキストフィールドに書き込むのではなく、ファイルをクリックするだけでファイルを選択できるようにすることはありますか? 問題が明確になったことを願っています;D
5 に答える
ファイルチューザを閉じる前に、入力したファイル名が有効であることを確認したい場合は、次のようにする必要があります。
JFileChooser chooser = new JFileChooser(...)
{
public void approveSelection()
{
if (getSelectedFile().exists())
super.approveSelection();
else
JOptionPane.showMessageDialog(this, "Selected file does not exist");
}
};
ユーザーがディレクトリではなくファイルを選択したことを確認することが目的の場合 (他の回答への回答からヒントが得られます)、 を使用できますFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
。ただし、これはファイル チューザーをインスタンス化するときの既定の設定であるため、コードが変更されない限り、明示的に設定する必要はありません。
閲覧をお楽しみください: http://java.sun.com/docs/books/tutorial/uiswing/components/filechooser.html
私はこれが直接可能であるとは信じていません.APIから判断すると、そうではないと思います. キーを押すたびにテキストボックスをクリアするリスナーを登録することで、おそらくそれをシミュレートできます。
ただし、これを実行してもよろしいですか? 個人的には、このように不自由なファイル セレクターを使用していた場合、特にファイル パスをどこかからクリップボードにコピーし、多数のディレクトリを手動でたどらなければならなかった場合など、非常に腹が立ちます。 .
ユーザー インターフェイスを無効にしたい特別な理由はありますか? 正当な理由が見当たらないので…
これは実際には答えの試みではありませんが、なぜテキストフィールドを読み取り専用にしたいのか疑問に思います. ユーザーを制限していますが、正確にはどのような利点がありますか? ファイル チューザの標準的な予想される動作を変更することは、非常に正当な理由がない限り、通常は適切な方法ではありません。
申し訳ありませんが、実際には答えではありませんが、なぜこれをやりたいのか考えてみてください。個人的な好みとして、テキストフィールドに書き込みできるのが好きです。これにより、あるディレクトリから別のディレクトリへの非常に迅速かつ簡単なナビゲーションを可能にする貼り付けが可能になります。
これを行う唯一の方法は、独自のものを提供し、FileChooserUI
それを経由setUI()
して設定することだと思いますJFileChooser
。パッケージから既存の実装をサブクラス化する場合、これを行うのはおそらく大した作業ではありませんjavax.swing.plaf
が、問題は、PLAF メカニズム全体を回避していることです。グローバルな L&F を変更しても、ファイル チューザーでは機能しません。