LoginSignup
0
0

More than 3 years have passed since last update.

【Java】com.sun.glass.WindowEventがimportされていてウインドウが閉じない

Posted at

開発環境

IDE: Eclipse photon 4.8
MacBook: Catalina 10.15.7
言語: java8

閉じるボタンでウインドウを閉じるためのコード

        addWindowListener(new WindowAdapter() {
//          @SuppressWarnings("unused")
            public void windowClosing (WindowEvent e) {
                dispose();
                System.exit(0);
            }
        });

@SuppressWarnings("unused")のところは、Eclipseが提案してきたコメント。これを挿入すればエラーは表示されなくなったけど、使用していないよと明示してJVMに教えたげてるので、使われていない変数があってもエラーとして認識しなくてもいいよ。書いた人もわかっているよということでエラーを表示させなくするためのコメント。

つまり、解決してないってこと!

当然、ウインドウを閉じることはできない。でも教材通りに書いてるつもりなんだけど。

Eclipseに頼ってたらちゃんと理解できない

// この部分でエラーが発生
public void windowClosing (WindowEvent e) {

Eclipseのエディターにはcom.sun.glass.events.WindowEventをインポートするっていう提案が一番上に出てきたので、import文を追加しました。

import com.sun.glass.events.WindowEvent;

これが元凶でした。

次に表示されたエラーが
型 new WindowAdapter(){} からのメソッド windowClosing(WindowEvent) はローカルで使用されません

Eclipseの言われた通りに修正したのにあかんやん。どゆこと?

上のエラーを簡単に言ったらメソッドの使い方がちゃうよってことだけど、、、なんでEclipseの言った通りにやったのにさ、解決してへんやんって感じでした。

そこから次のようなコメントを挿入することが提案される

@SuppressWarnings("unused")

いや、これって、使ってないよって話じゃん。。。

んで教材をみて、サンプルと比較しても該当する部分は完全に一致しているように見える。サンプルの該当部分をコピペして貼り付けても同じエラーが起こるので、スペルミスや、見えないコードが混じり込んでいることも考えられないし。。。。

というのでどんどん沼にハマって行きました。。。。

同じ名前のクラスが異なるパッケージに複数ある

また最初のエラーが出ている状態のコードに戻して、Eclipseに表示される提案部分を確認したら、スクロールして下の方にも別の提案がありました。

そこにjava.awt.Eventをインポートするっていうような提案がありました。

ひょっとしてそれじゃねぇのか?って思ったらビンゴでした。

経験が浅いとEclipseの一番上に出てくる提案部分を採用して修正すればいいんじゃないかと思っていたのが間違い。だめ絶対。

結局インポート文が間違っていた

import java.awt.Event;

とすれば一瞬で解決しました。

じゃあcom.sun.glass.WindowEventはなんなの?

micromagic_ouyou_src_myApp_BufferedStream_java_-__Users_onoharamakoto_Desktop_work_java_-_Eclipse_IDE.png

ここにありました。違うパッケージにあるんですね。ややこしい。

結局これでめっちゃ時間がかかってしまった。。。。

2時間くらいかかったけど実りはあったかなと

エラーの解決手順が身についた?

これは自分で思っていることですけど、

  1. Eclipseに頼りっきりにしない
  2. 公式ドキュメントを確認する
  3. ググってみて英語のページしかでてこないけど、ちゃんと読む
  4. JREライブラリを確認するようになった
  5. スペルミス以外のミスの経験が得られた
  6. 自分で解決した経験が得られた

たかだかインポート文が間違っていたというしょうもないミスだったのに2時間くらいかかってしまったのはアホらしいですけど、こういう経験が身になるのかなと信じています。

基本的にはエラーは自分で解決できていますが、やっぱり同様のエラーが出てきた時には教えてもらったことよりも解決するのが断然早い。

そして、なんとなくエラー解決の手順が自分なりに形になってくるので、新しいエラーに関しても手順自体は生かせるかなと感じました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0