Я хотел знать, как сделать кликабельное изображение с помощью ImageView, которое приведет меня к другому FXML, используя конструктор сцен. Я использую Eclipse IDE.
Я никогда не использовал setOnMouseClicked(EventHandler<MouseEvent> event)
, но вы можете просто вызвать 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) Создайте Button
или (Label
) в SceneBuilder
2) Добавьте ImageView
в Button с помощью SceneBuilder
Релевантный вопрос: здесь
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;
}
Здесь вы можете играть с помощью метода setPickOnBounds(true/false);
если вы хотите, чтобы прозрачные области Button
получали события кликов.
4) Добавить ActionListener
или MouseListener
к Button
с помощью SceneBuilder
или простой Java Code
Давайте начнем с создания сцены, откройте файл fxml. Drag-and-drop ImageView из библиотеки Scenebuilder (правая панель). После добавления выберите 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, который вы хотите на клик изображения.