76163


eclipseにて、書籍通りにコードを打つと、SampleEventHandlerの部分にエラー(型に解決できない)が出てコード通りに実行できません。なぜなのかわからないため質問しました。

[code]

    package lesson3;
    
    import javafx.application.Application;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.control.Label;
    import javafx.scene.input.MouseEvent;
    import javafx.scene.layout.BorderPane;
    import javafx.stage.Stage;
    
    public class Sample6 extends Application {
        private Label lb;
    
        public static void main(String[] args) {
            launch(args);
        }
        public void start(Stage stage)throws Exception
        {
    
            lb = new Label("いらっしゃいませ。");
    
            BorderPane bp = new BorderPane();
    
            bp.setTop(lb);
    
            Scene sc = new Scene(bp,300,200);
    
            sc.addEventHandler(MouseEvent.MOUSE_ENTERED,new SampleEventHandler());
            sc.addEventHandler(MouseEvent.MOUSE_EXITED,new SampleEventHandler());
    
            stage.setScene(sc);
    
            stage.setTitle("サンプル");
            stage.show();
            class SampleEventHandler implements EventHandler<MouseEvent>{
                public void handle(MouseEvent e)
                {
                    if(e.getEventType() == MouseEvent.MOUSE_ENTERED) {
                        lb.setText("いらっしゃいませ。");
    
                    }
                    else if(e.getEventType() == MouseEvent.MOUSE_EXITED)
                    {
                        lb.setText("ようこそ。");
                        {
                        }
                    }
    
                    // TODO 自動生成されたメソッド・スタブ
    
                }
            }
        }
    }
    
[/code]


CC BY-SA 4.0
2021-05-28T16:30:12.143
76160
2021-06-04T03:49:25.727
2021-06-04T03:49:25.727
3060
45543
question
java javafx
javafxのSampleEventHandlerのエラー


カッコを閉じている箇所を書籍のコードと見比べてみてください。

質問文中のコードでは、 `SampleEventHandler` クラスが `start` メソッドの中で定義されています。

[code]

    public class Sample6 extends Application {
        // 中略
        public void start(Stage stage)throws Exception
        {
            // 中略
            class SampleEventHandler implements EventHandler<MouseEvent>{
                // 中略
            }
        }
    }
    
[/code]

それに対し、おそらく書籍に書かれているコードでは、`start`メソッドの外で定義されていると思います。

[code]

    public class Sample6 extends Application {
        // 中略
        public void start(Stage stage)throws Exception
        {
            // 中略
        }
    
        class SampleEventHandler implements EventHandler<MouseEvent>{
            // 中略
        }
    }
    
[/code]


CC BY-SA 4.0
2021-05-28T18:46:58.747
76163
2021-05-28T18:46:58.747
2808
76160
answer