2016-11-08 2 views

ответ

2

Я никогда не использовал сценарий, но вы можете просто позвонить 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); 
    } 

} 
0

Давайте начнем с создания сцены, откройте файл fxml. Drag-and-drop ImageView из библиотеки Scenebuilder (правая панель). После добавления выберите ImageView и дайте ему fx: id «iView» в этом случае, затем перейдите в раздел «Код» и добавьте имя функции в поле OnMouseClicked. Я назвал свою функцию «LoginUser».

: 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 вы хотите на изображении мыши.

1

) Создать Button или (Label) в SceneBuilder

) Добавить ImageView к кнопке с помощью SceneBuilder

Соответствующий вопрос: here

) Использование 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 получить событие щелчка.

) Добавить ActionListener или MouseListener к Button с помощью SceneBuilder или простой Java Code


Смежные вопросы