【问题标题】:JavaFX - Mouse Event not triggeringJavaFX - 鼠标事件未触发
【发布时间】:2013-12-15 17:57:45
【问题描述】:

这是我的代码:

Button start = new Button("Start");
    start.setPrefHeight(100d);
    start.setMaxWidth(Double.MAX_VALUE);        

    start.setOnMouseClicked(new EventHandler<MouseEvent>(){

        @Override
        public void handle(MouseEvent arg0) {
            //ss.startServer();
            System.out.println("adfasddasfrwgafsdasdf");
        }

    });

在 Eclipse 时,该消息不会打印在控制台上!我希望在释放鼠标时触发事件。我做错了什么?

经过进一步调查,我意识到如果我在另一个节点上有另一个 mouseReleased 事件,它会触发更多事件!...为什么会这样? 例如,这是我正在使用的代码,当我按下开始按钮时,它会打印开始并重新加载!

 start.setOnMouseReleased(new EventHandler<MouseEvent>(){

        @Override
        public void handle(MouseEvent arg0) {
            ss.startServer();
            System.out.println("Start");
            arg0.consume();
        }


    });
 Button stop = new Button("Stop");
    stop.setPrefHeight(100d);
    stop.setMaxWidth(Double.MAX_VALUE);
    stop.setOnMouseReleased(new EventHandler<MouseEvent>(){

        @Override
        public void handle(MouseEvent event) {
            sc.stopServer();
            System.out.println("Stop");
            event.consume();
        }

    });
    Button reload = new Button("Reload");
    reload.setPrefHeight(100d);
    reload.setMaxWidth(Double.MAX_VALUE);
    start.setOnMouseReleased(new EventHandler<MouseEvent>(){

        @Override
        public void handle(MouseEvent some) {
            sc.reloadServer();
            System.out.println("Reload");
            some.consume();
        }

    });

停止按钮正常工作! 无论如何,如果另一段代码有效,那就是(http://pastebin.com/4f55R2gN)

【问题讨论】:

    标签: java events button user-interface javafx


    【解决方案1】:

    您的代码打错了。您将 MouseReleased 处理程序设置在 start 对象上,而不是 reload

        Button reload = new Button("Reload");
        reload.setPrefHeight(100d);
        reload.setMaxWidth(Double.MAX_VALUE);
        start.setOnMouseReleased(new EventHandler<MouseEvent>(){
    

    【讨论】:

      【解决方案2】:

      试试这个

      button.setOnMouseReleased(new EventHandler<MouseEvent>() {
         @Override
         public void handle(MouseEvent arg0) {
            System.out.println("button click and mouse released");
         }
      });
      

      以下内容对我来说很好。

      public class FxmlSample extends Application{
      
          public static void main(String[] args) {
              launch(args);
          }
      
          @Override
          public void start(Stage stage) throws IOException{
              JFrame frame = new JFrame();
      
              JFXPanel jfxPanel = new JFXPanel();
      
              Pane pane = new Pane();
              VBox vBox = new VBox();
              Button button = new Button("Click me");
              button.setMinSize(50.0, 50.0);
              button.setOnMouseReleased(new EventHandler<MouseEvent>() {
                  @Override
                  public void handle(MouseEvent arg0) {
                      System.out.println("11111111111111");
      
                  }
              });
      
              Button button_2 = new Button("Click me 2");
              button_2.setMinSize(50.0, 50.0);
              button_2.setOnMouseReleased(new EventHandler<MouseEvent>() {
                  @Override
                  public void handle(MouseEvent arg0) {
                      System.out.println("2222222222222");
      
                  }
              });
              vBox.setPadding(new Insets(20));
              vBox.getChildren().addAll(button, button_2);
              pane.getChildren().addAll(vBox);
              Scene scene = new Scene(pane);      
              jfxPanel.setScene(scene);
              frame.add(jfxPanel);
              frame.setVisible(true);
              frame.setMinimumSize(new Dimension(700, 700));
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          }
      }
      

      【讨论】:

      猜你喜欢
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      • 2016-08-16
      • 1970-01-01
      • 2018-11-26
      • 2022-07-27
      • 2015-07-23
      相关资源
      最近更新 更多