C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: windowClosingが反応しない


(過去ログ 138 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■80952 / inTopicNo.1)  windowClosingが反応しない
  
□投稿者/ JAVA初心者 (1回)-(2016/08/22(Mon) 12:13:08)

分類:[Java] 

プログラミング初心者ではありませんが、JAVA初心者です。
とあるサイトにあったswingを使ったメモ帳サンプルを拝借し、カスタマイズをしています。

そのソースには閉じるボタン(右上の×ボタン)のイベントがなかったため追加して保存するか否かのダイアログを組み込もうとしておりますがそこが反応しません。

ソースの一部を下記します。

public class EditorFrame extends JFrame implements ActionListener {

Container con;
JMenuBar mb ;
JMenu muFile ;
JMenu muEdit ;

JMenuItem miOpen, miSave, miExit ;
JMenuItem miCut, miCopy, miPaste ;

JTextArea ta ;
JScrollPane sp ; // スクロールバー付きのコンテナ
JFileChooser fc ; // フアイルを選択して開いたり保存したり
// するためのダイアログを表示するときに使う 
File file;
Font ft1, ft2;


public EditorFrame() { // コンストラクタ
setSize(700, 600);
setTitle("sample");
setLocation(150,20);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

con = getContentPane();
ft1 = new Font("SansSerif",Font.BOLD,18);
ft2 = new Font("SansSerif",Font.BOLD,16);

mb = new JMenuBar();
muFile = new JMenu("ファイル");
muEdit = new JMenu("編集");
muFile.setFont(ft1);
muEdit.setFont(ft1);

miOpen = new JMenuItem("開く");
miSave = new JMenuItem("保存");
miExit = new JMenuItem("終了");

miCut = new JMenuItem("切り取り");
miCopy = new JMenuItem("コピー");
miPaste = new JMenuItem("貼り付け");

miOpen.setFont(ft1);
miSave.setFont(ft1);
miExit.setFont(ft1);
miCut.setFont(ft1);
miCopy.setFont(ft1);
miPaste.setFont(ft1);

ta = new JTextArea();
ta.setFont(ft2);
sp = new JScrollPane(ta);
fc = new JFileChooser();

miOpen.addActionListener(this);
miSave.addActionListener(this);
miExit.addActionListener(this);
miCut.addActionListener(this);
miCopy.addActionListener(this);
miPaste.addActionListener(this);

muFile.add(miOpen);
muFile.add(miSave);
muFile.addSeparator();
muFile.add(miExit);

muEdit.add(miCut);
muEdit.add(miCopy);
muEdit.add(miPaste);

mb.add(muFile);
mb.add(muEdit);
con.add(sp, BorderLayout.CENTER);

setJMenuBar(mb);

} // コンストラクタ終り

class WindowClosing extends WindowAdapter{
public void windowClosing(WindowEvent e) {
int ans = JOptionPane.showConfirmDialog(EditorFrame.this, "本当に終了しますか?");
System.out.println(ans);
if(ans == JOptionPane.YES_OPTION) {
System.out.println("プログラムによる終了処理の実行");
System.exit(0);
}
}
}


もちろん、この前後にもソースはありますが、そこは関係ないと思っています。
この掲載した下から10行が閉じるボタンのために追加した処理ですが、これが無反応です。

何がいけないかご教示いただけますか。
引用返信 編集キー/
■80953 / inTopicNo.2)  Re[1]: windowClosingが反応しない
□投稿者/ JAVA初心者 (2回)-(2016/08/22(Mon) 12:17:10)
2016/08/22(Mon) 12:18:00 編集(投稿者)

すいません。追記です。

無反応というのはクローズしないという意味ではなく、
ダイアログが表示されずに終了してしまうという意味です。

windowClosingの処理を通っていない気がします。
引用返信 編集キー/
■80976 / inTopicNo.3)  Re[2]: windowClosingが反応しない
□投稿者/ もりお (16回)-(2016/08/23(Tue) 02:25:17)
No80953 (JAVA初心者 さん) に返信

WindowClosingのオブジェクトを作ってaddWindowListenerで追加するとよいですよ
addWindowListener(new WindowClosing());
引用返信 編集キー/
■80991 / inTopicNo.4)  Re[3]: windowClosingが反応しない
□投稿者/ JAVA初心者 (3回)-(2016/08/23(Tue) 11:58:39)
2016/08/23(Tue) 11:59:04 編集(投稿者)

No80976 (もりお さん) に返信
> ■No80953 (JAVA初心者 さん) に返信
>
> WindowClosingのオブジェクトを作ってaddWindowListenerで追加するとよいですよ
> addWindowListener(new WindowClosing());

ありがとうございます!
ご指摘どおり対応したら出ました!
ほんとに助かりました。ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -