目次へ

解答例 - 実習課題3 - 17.選択コンポーネント

(実習課題3)

実習課題2のプログラムを改良しなさい。

  • 拡張子が「java」のファイル以外は表示しないフィルタを追加する事。

解答例

/**
 * ChooseOnlyJavaFileFrame.java
 * TECHSCORE Javaユーザインタフェース17章 実習課題3
 *
 * Copyright (c) 2004 Four-Dimensional Data, Inc.
 */

package com.techscore.ui.chapter17.exercise3;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileFilter;

public class ChooseOnlyJavaFileFrame extends JFrame implements ActionListener {

    private JButton openButton;

    public ChooseOnlyJavaFileFrame() {
        super("ChooseOnlyJavaFileFrame");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(new Dimension(300, 200));

        openButton = new JButton("choose");
        openButton.addActionListener(this);

        getContentPane().add(openButton);
    }

    private class OnlyJavaFilter extends FileFilter {

        public boolean accept(java.io.File f) {
            // ディレクトリなら表示
            if (f.isDirectory()) {
                return true;
            }
            // ファイルなら拡張子がjavaのものだけを表示
            String fileName = f.getName();
            int extIndex = fileName.lastIndexOf(".");
            if (extIndex >= 0) {
                if (fileName.substring(extIndex).equals(".java")) {
                    return true;
                }
            }
            return false;
        }

        public String getDescription() {
            return "Java File(*.java)";
        }

    }

    public void actionPerformed(ActionEvent event) {
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.addChoosableFileFilter(new OnlyJavaFilter());

        if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
            JOptionPane.showMessageDialog(
                this,
                fileChooser.getSelectedFile().getPath(),
                "FILE PATH",
                JOptionPane.INFORMATION_MESSAGE);
        } else {
            JOptionPane.showMessageDialog(this, "You don't choose a file.", "WARNING", JOptionPane.WARNING_MESSAGE);
        }
    }

    public static void main(String[] args) {
        new ChooseOnlyJavaFileFrame().setVisible(true);
    }

}

 

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp