2014年4月2日水曜日

開発環境

Head First Java 第2版 ―頭とからだで覚えるJavaの基本(Kathy Sierra (著)、Bert Bates (著)、島田 秋雄 (監修)、神戸 博之 (監修)、高坂 一城 (監修)、夏目 大 (翻訳)、オライリージャパン)の14章(シリアライゼーションとファイルI/O)、自分で考えてみよう(p.464)を解いてみる。

自分で考えてみよう(p.464)

コード(BBEdit, Emacs)

BeatBox.java

// 省略
public class BeatBox {
    // 省略
    // こんな感じでいいのかなぁ。
    public class MySendListener implements ActionListener {
        public void actionPerformed(ActionEvent a) {
            boolean [] checkboxState = new boolean [256];

            for (int i = 0; i < 256; ++i) {
                JCheckBox check = (JCheckBox) checkboxList.get(i);
                if (check.isSelected()) {
                    checkboxState [i] = true;
                }
            }
            try {
                JFileChooser fileSave = new JFileChooser();
                fileSave.showSaveDialog(frame);
                FileOutputStream fileStream =
                    new FileOutputStream(fileStream.getSelectedFile());
                ObjectOutputStream os = new ObjectOutputStream(fileStream);
                os.writeObject(checkboxState);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }

    public class MyReadInListener implements ActionListener {
        public void actionPerformed(ActionEvent a) {
            boolean [] checkboxState = null;
            try {
                JFileChooser fileOpen = new JFileChooser();
                fileOpen.showOpenDialog(frame);
                FileInputStream fileIn =
                    new FileInputStream(fileOpen.getSelectedFile());
                ObjectInputStream is = new ObjectInputStream(fileIn);
                checkboxState = (boolean [])is.readObject();
            } catch (Exception ex) {ex.printStackTrace();}

            for (int i = 0; i < 256; ++i) {
                JCheckBox check = (JCheckBox) checkboxList.get(i);
                if (checkboxState[i]) {
                    check.setSelected(true);
                } else {
                    check.setSelected(false);
                }
            }

            sequencer.stop();
            buildTrackAndStart();
        }
    }
}

0 コメント:

コメントを投稿