JavaFx:如何使用 scenebuilder 制作可点击的图像

JavaFx: how make a clickable image using scenebuilder

我想知道如何使用 ImageView 制作可点击的图像,这会将我带到另一个使用场景生成器的 FXML。我正在使用日食 IDE.

我从未使用过场景生成器,但您可以在 ImageView 对象上调用 setOnMouseClicked(EventHandler<MouseEvent> event)

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class ImageClickExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        ImageView img = new ImageView("http://i.stack.imgur.com/oURrw.png");
        img.setPickOnBounds(true); // allows click on transparent areas
        img.setOnMouseClicked((MouseEvent e) -> {
            System.out.println("Clicked!"); // change functionality
        });
        Scene scene = new Scene(new StackPane(img));
        primaryStage.setTitle("Image Click Example");
        primaryStage.setScene(scene);
        primaryStage.sizeToScene();
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}

让我们从 scenebuilder 开始,打开 fxml 文件。从 Scenebuilder 库(右面板)中拖放 ImageView。添加后,select ImageView 并在本例中给它一个 fx:id "iView",然后转到代码部分并在 OnMouseClicked 字段中添加一个函数名称。我将函数命名为 "LoginUser".

:

现在在eclipse中打开控制器文件IDE。

使用@FXML 标签定义函数:

@FXML
private boolean LoginUser() throws ClassNotFoundException {
    Stage mainStage = (Stage) iView.getScene().getWindow();

    try {
            Parent root = FXMLLoader.load(getClass().getResource("file.fxml"));
            Scene scene = new Scene(root);
            mainStage.setScene(scene);
            mainStage.setTitle("Test Window");
        }
            catch(Exception e){}
}

点击图片加载你想要的 fxml 文件。


1)在SceneBuilder

中创建一个Button或(Label

2)使用 SceneBuilder

添加一个 ImageView 到按钮

相关问题:

3)使用CSS:

    1)Inside the `SceneBuilder` or

    2)Using an external css file(with styleclass or with css id) as shown above i have added all the three ways(choose one :) ):

  .crazyButton{
      -fx-background-color:transparent;
      -fx-border-color:transparent;
      -fx-text-fill:transparent;    
  }

  or


  #myButton{
     -fx-background-color:transparent;
     -fx-border-color:transparent;
     -fx-text-fill:transparent;    
  }

如果你想让 Button 的透明区域接收点击事件,你可以使用方法 setPickOnBounds(true/false);

4)使用 SceneBuilder 或纯 Java Code 添加 ActionListenerMouseListenerButton