如何在JavaFX中实现Swing中的MouseListener
我用Swing编写了一个简单的登录面板,现在我必须用JavaFX重做所有事情,但我不知道如何转换ActionListeners/MouseListener 无论何时选中/取消选中“Neu Anmeldung”复选框,都应该在Eclipse控制台中看到值true/false 我的Swing代码用于此目的:如何在JavaFX中实现Swing中的MouseListener,java,eclipse,swing,javafx,event-handling,Java,Eclipse,Swing,Javafx,Event Handling,我用Swing编写了一个简单的登录面板,现在我必须用JavaFX重做所有事情,但我不知道如何转换ActionListeners/MouseListener 无论何时选中/取消选中“Neu Anmeldung”复选框,都应该在Eclipse控制台中看到值true/false 我的Swing代码用于此目的: // ... this.jBoxNeuAnmeldung.addMouseListener(new MouseAdapter() { @Override public
// ...
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做同样的事情
...
checkBox.setOnAction((event) -> {
neuAnmeldung = checkBox.isSelected();
System.out.println("Neu-Anmeldung Checkbox angekreutzt? "
+ neuAnmeldung);
});
用复选框名称替换复选框,例如
final CheckBox jBoxNeuAnmeldung = new CheckBox();
...
jBoxNeuAnmeldung.setOnAction((event) -> {
neuAnmeldung = jBoxNeuAnmeldung.isSelected();
System.out.println("Neu-Anmeldung Checkbox angekreutzt? "
+ neuAnmeldung);
});
(在标准Java 8中,当在labmda表达式中使用时,您也可以省略final in复选框)。通过将
ChangeListener
添加到selected
属性
checkBox.selectedProperty().addListener((observable, oldValue, newValue) -> System.out.println("Neu-Anmeldung Checkbox angekreutzt? " + newValue));
我使用
ActionEvent
实现了一个更简单的方法,并将其连接到我的FXML文件中。不起作用!无法从类型CheckBoxcheckBox中静态引用非静态方法isSelected()
,Checkbox只是一个示例,请替换为变量的名称,例如jBoxNeuAnmeldung.isSelected()。注意jBoxNeuAnmeldung应该是对象的字段或final,否则不能引用它。如果您遇到此错误,您只需按原样复制,并尝试将复选框更正为复选框(因为小写复选框不是一种类型,因此会出现未定义的错误,而不是静态引用错误)。我已将答案扩展为更具体的答案,很高兴您能找到答案!事实上类似,您只是在FXML中连接完全相同的事件,而不是使用setOnAction显式设置此事件的处理程序)
@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);
}