JFileChooser
エクスポート機能の一部として使用しています。JFileChooser
ユーザーがのファイル ビューアからファイルを選択するか、ファイル名テキスト ボックスにファイル名を入力できるようにしたいと考えています。私が読んだことから、メソッドを使用してその値を取得することが可能であるため、エクスポートを実行する前にいくつかのチェックを呼び出して実行しようとするgetSelectedFile()
リスナーがいくつかあります。getSelectedFile()
私が直面している問題はgetSelectedFile()
、名前をファイル名テキスト ボックスに手動で入力すると、メソッドが null を返すことです。さらに混乱を招くことに、このgetSelectedFile()
方法は 3 つの異なる状況で機能します。
- 私はそれを介して入力し
setSelectedFile()
ます(ユーザーがテーブルから値をクリックし、使用しますsetSelectedFile()
) - ファイル ビューアで既存のファイルをクリックする
- ファイル名のテキスト ボックスにデータを入力した後、Enter キーを押しました
3 つのファイル フィルターがありますが、それらが有効になっているかどうかに関係なく、同じ動作をしています。
呼び出すリスナーgetSelectedFile()
は次のとおりです。
- keyReleased のイベント リスナー
- mousePressed のイベント リスナー。
- jFileChooser の PropertyChangeEvent リスナー
- jFileChooser のアクション リスナー
ユーザー入力を取得するために jFileChooser をリッスンするより良い方法はありますか? 非常に明白な何かが欠けているように感じます...どんな助けも大歓迎です!
編集 もう少し情報を...
にある にJFileChooser
コンポーネントがJSplitPane
ありJFrame
ます。showOpenDialog
ユーザーからの入力を取得するために呼び出しているわけではありません。コンポーネントは、フォームの一部としてアクセスできます。
私がやりたいことは、ユーザーが入力するときにユーザー入力を聞くことです。ユーザーがコンポーネントのファイル名テキストボックスに有効なファイル名を入力するまで無効のままにしたい「エクスポート開始」ボタンがありJFileChooser
ます。これを実現するために、ユーザーが入力したときにファイル名を取得するために使用したい KeyEvent リスナーがあります。
さらに編集
アクション リスナーのコードは次のとおりです。
jFileChooserExport.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jFileChooserExportActionPerformed(evt);
}
});
ここにもプロパティ変更リスナーがあります。
jFileChooserExport.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
jFileChooserExportPropertyChange(evt);
}
});
jFileChooserExportPropertyChange と jFileChooserExportActionPerformed の両方の内部で、getSelectedFile() を呼び出して、ユーザーが選択したファイルを取得しようとしています。ただし、どちらの場合も、ユーザーが上記の 3 つの方法のいずれかを実行するまで null のままです。