2016-12-03 99 views
-1

我有一個使用Swing編寫的簡單登錄面板,現在我必須用JavaFX重做所有事情,但我不知道如何轉換ActionListeners/MouseListeners。如何在JavaFX中實現Swing中的MouseListener

enter image description here

每當 「NEU-Anmeldung」 複選框被選中/取消,值真/假應當在Eclipse控制檯中看到。

爲此,我的揮杆代碼:

// ... 

this.jBoxNeuAnmeldung.addMouseListener(new MouseAdapter() { 
     @Override 
     public void mouseClicked(MouseEvent e) { 
     if (LoginFrame.this.jBoxNeuAnmeldung.isSelected()) 
      neuAnmeldung = true; 
     else 
      neuAnmeldung = false; 
     System.out 
      .println("Neu-Anmeldung Checkbox angekreutzt? " + neuAnmeldung); 
     } 
    }); 

// ... 

我如何做同樣的事情使用JavaFX?

回答

1
... 
    checkBox.setOnAction((event) -> { 
     neuAnmeldung = checkBox.isSelected(); 
     System.out.println("Neu-Anmeldung Checkbox angekreutzt? " 
       + neuAnmeldung); 
    }); 

通過複選框名稱替換checkBox,例如,

final CheckBox jBoxNeuAnmeldung = new CheckBox(); 
    ... 
    jBoxNeuAnmeldung.setOnAction((event) -> { 
     neuAnmeldung = jBoxNeuAnmeldung.isSelected(); 
     System.out.println("Neu-Anmeldung Checkbox angekreutzt? " 
       + neuAnmeldung); 
    });  

(在標準Java 8中,您也可以在LabMda表達式中使用時省略CheckBox中的最終選項)。

+0

不工作!不能從類型CheckBox中對非靜態方法isSelected()進行靜態引用。 – Bahador

+0

checkBox只是一個例子,用你的變量名稱替換,例如, jBoxNeuAnmeldung.isSelected()。注意jBoxNeuAnmeldung應該是對象的字段或final,否則不能引用它。如果你得到這個錯誤,你只是照原樣複製,並試圖將CheckBox更正爲CheckBox(因爲小寫複選框不是一個類型,所以會給出未定義的錯誤而不是靜態引用錯誤)。 –

+0

我已將擴大答案更具體 –

0

通過添加ChangeListenerselected財產

checkBox.selectedProperty().addListener((observable, oldValue, newValue) -> System.out.println("Neu-Anmeldung Checkbox angekreutzt? " + newValue)); 
0
@FXML 
    public CheckBox checkBoxNeuAnmeldung; 

    @FXML 
    public void handleCheckBoxNeuAnmeldungAction(ActionEvent event) { 
    if (checkBoxNeuAnmeldung.isSelected()) { 
     neuAnmeldung = true; 
    } else 
     neuAnmeldung = false; 
    System.out.println("Neu-Anmeldung Checkbox angekreutzt? " + neuAnmeldung); 
    } 

我設法實現使用ActionEvent一個更簡單的方法,並將其連接TP我FXML文件。