1

awt テキスト フィールドとボタンを持つ Java コードを作成しました。ボタンをクリックすると、JFileChooser を使用してファイルを参照できます。ファイルの拡張子が「.txt」であるかどうかを確認する必要があります。以下のコードを書きましたが、検証されていません。

どこが間違っていますか?私が間違っている場所を特定するのを手伝ってください。

         try{
            final JFileChooser chooser = new JFileChooser();
            chooser.showOpenDialog(null);
            chooser.addChoosableFileFilter(new FileFilter() {
            public String getDescription() {
                return "*.txt";
            }
            public boolean accept(File filename)
            {

                if(filename.getName().endsWith(".txt")){
                    return true;
                }
                else{
                System.out.println("Browsed dest file extension must be .txt");
                return false;
                }}
            });
        catch(Exception ex)
        {
            JOptionPane.showMessageDialog(f,"Exception occurred");
        }
4

2 に答える 2

6

あなたの問題は次のとおりです。

chooser.showOpenDialog(null);

ユーザーがファイルを選択するまでコードの実行を停止します。追加後にこの行を追加するFileFilterと、すべてが正常に機能するはずです。

少し説明:

showOpenDialog(Component c)ユーザーがファイルを選択した後、ユーザーアクションとコードの次の行が実行されるまで、現在のスレッドのメソッドブロック実行。FileFilterもう一度追加した後に呼び出すshowOpenDialogと、期待どおりに機能します。

于 2013-01-26T11:19:36.620 に答える
4

@Overrideメソッドに注釈を使用することをお勧めしacceptます - このリンク@Override を参照してください Oracle Documentation で説明されています

さらに、拡張子を持つファイルもフィルターを通過するようにするために、filename.getName().toLowerCase().endsWith(".txt")代わりに使用することをお勧めします。filename.getName().endsWith(".txt").TXT

于 2013-01-26T11:34:55.970 に答える