ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Javaの課題丸投げコミュのJFileChooserで質問です

  • mixiチェック
  • このエントリーをはてなブックマークに追加
以下のようなコードでmenuExitを押すとJFileChooserが開かれてしまいます。
JFileChooserはmenuOpenを押したときのみ動作するようなプログラムを書いていただけないでしょうか。よろしくお願いします。

コード
import java.awt.event.*;
import java.io.File;

import javax.swing.*;

class MyFrame extends JFrame implements ActionListener {
JMenuBar menuBar;
JMenu menuFile;
JMenuItem menuOpen;
JMenuItem menuExit;

public MyFrame() {
setSize(300,200);
//×ボタンを押したときの処理
addWindowListener(new MyWindowAdapter());
//オブジェクトを実体化
menuBar = new JMenuBar();
menuFile = new JMenu("File");
menuOpen = new JMenuItem("Open");
menuExit = new JMenuItem("Exit");
//ルートパネルにメニューバーを追加
getRootPane().setJMenuBar(menuBar);
//メニューバーにファイルを追加
menuBar.add(menuFile);
//ファイルに開く閉じるを追加
menuFile.add(menuOpen);
menuFile.add(menuExit);
//メニューを押したとき
menuOpen.addActionListener(this);
menuExit.addActionListener(this);
}
//メニューを押したときの処理
public void actionPerformed(ActionEvent ae){
if (ae.getSource() == menuOpen)
System.out.println("メニューオープンがクリックされました");
JFileChooser filechooser = new JFileChooser();

int selected = filechooser.showOpenDialog(this);
if (selected == JFileChooser.APPROVE_OPTION){
File file = filechooser.getSelectedFile();
System.out.println(file.getName());

}else if (selected == JFileChooser.CANCEL_OPTION){
System.out.println("キャンセルされました");
}else if (selected == JFileChooser.ERROR_OPTION){
System.out.println("エラーまたは取り消しがありました");
}
else if (ae.getSource() == menuExit)
System.out.println("メニューexitがクリックされました");
System.exit(0);
}
}

class MyWindowAdapter extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
public class frameTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
MyFrame f = new MyFrame();
f.setVisible(true);
}
}

コメント(2)

とりあえず目的を果たすだけなら、actionPerformedメソッドを書き換え。
元のコードは明らかに、if elseの対応関係が意味的におかしいから、意図通りのコードになってないんでは?


    public void actionPerformed(ActionEvent ae) {
        if (ae.getSource() == menuOpen) {
            System.out.println("メニューオープンがクリックされました");
            JFileChooser filechooser = new JFileChooser();

            int selected = filechooser.showOpenDialog(this);
            if (selected == JFileChooser.APPROVE_OPTION) {
                File file = filechooser.getSelectedFile();
                System.out.println(file.getName());

            } else if (selected == JFileChooser.CANCEL_OPTION) {
                System.out.println("キャンセルされました");
            } else if (selected == JFileChooser.ERROR_OPTION) {
                System.out.println("エラーまたは取り消しがありました");
            }
        } else if (ae.getSource() == menuExit) {
            System.out.println("メニューexitがクリックされました");
            System.exit(0);
        }
    }
はい。ありがとうございました。
おかげさまで上手く行きました(__)

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Javaの課題丸投げ 更新情報

Javaの課題丸投げのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング