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

时间:2016-11-08 20:17:52

标签: java eclipse javafx desktop-application scenebuilder

我想知道如何使用ImageView制作可点击的图像,它使用场景构建器将我带到另一个FXML。我正在使用eclipse IDE。

3 个答案:

答案 0 :(得分:5)

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

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);
    }

}

答案 1 :(得分:1)

让我们从scenebuilder开始,打开fxml文件。从Scenebuilder库中拖放ImageView(右侧面板)。添加后,选择ImageView并给它一个fx:id&#34; iView&#34;在这种情况下,然后转到代码部分并在OnMouseClicked字段中添加一个函数名称。我将我的功能命名为#34; LoginUser&#34;。

enter image description here

现在在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文件。

答案 2 :(得分:1)

1 )在Button

中创建Label或(SceneBuilder

2 )使用ImageView

向按钮添加SceneBuilder

相关问题:here

3 )使用CSS:

enter image description here

    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;    
  }

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

4 )使用ActionListener或普通MouseListener

Button添加SceneBuilderJava Code