使用JavaFX检查单击了哪个按钮对象
我正在制作一个基本的计算器,但我不确定如何检查是否单击了某个使用JavaFX检查单击了哪个按钮对象,java,button,javafx,Java,Button,Javafx,我正在制作一个基本的计算器,但我不确定如何检查是否单击了某个按钮。我想使用按钮对象数组,然后检查单击的按钮是否与数组中的按钮对象匹配。我的代码如下 Button[] digitButtons = { bt0, bt1, bt2, bt3, bt4, bt5, bt6, bt7, bt8, bt9 }; for (int index = 0; index < 9; index++) { int position = -1; if (buttonClicked == digi
按钮。我想使用按钮对象数组,然后检查单击的按钮是否与数组中的按钮对象匹配。我的代码如下
Button[] digitButtons = { bt0, bt1, bt2, bt3, bt4, bt5, bt6, bt7, bt8, bt9 };
for (int index = 0; index < 9; index++) {
int position = -1;
if (buttonClicked == digitButtons[index]) {
position = index;
break;
}
}
Button[]数字按钮={bt0、bt1、bt2、bt3、bt4、bt5、bt6、bt7、bt8、bt9};
对于(int-index=0;index<9;index++){
int位置=-1;
如果(buttonClicked==数字按钮[索引]){
位置=索引;
打破
}
}
一个简单的方法
FXML
创建两个按钮(分别调用B1
和B2
,并为每个按钮添加fx:id
)
一个简单的方法
FXML
创建两个按钮(分别调用B1
和B2
,并为每个按钮添加fx:id
)
以下是一个例子:
public class Main extends Application {
private int lastClickedIndex = -1;
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
Scene scene = new Scene(root, 400, 400);
Button[] digitButtons = new Button[10];
for(int i = 0; i < 10; i++) {
final int buttonInd = i;
digitButtons[i] = new Button(Integer.toString(i));
digitButtons[i].setOnAction(e -> {
System.out.println("Button pressed " + ((Button) e.getSource()).getText());
lastClickedIndex = buttonInd;
});
}
root.setCenter(new HBox(digitButtons));
primaryStage.setScene(scene);
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
public类主扩展应用程序{
private int lastClickedIndex=-1;
@凌驾
公共无效开始(阶段primaryStage){
试一试{
BorderPane根=新的BorderPane();
场景=新场景(根,400400);
按钮[]数字按钮=新按钮[10];
对于(int i=0;i<10;i++){
最终int按钮nind=i;
digitButtons[i]=新按钮(Integer.toString(i));
数字按钮[i]。设置操作(e->{
System.out.println(“按下按钮”+((按钮)e.getSource()).getText());
lastClickedIndex=按钮D;
});
}
root.setCenter(新的HBox(数字按钮));
初级阶段。场景(场景);
primaryStage.show();
}捕获(例外e){
e、 printStackTrace();
}
}
公共静态void main(字符串[]args){
发射(args);
}
}
注意:无需获取索引,因为按钮
被精确指定为事件源:e.getSource()
以下是一个示例:
public class Main extends Application {
private int lastClickedIndex = -1;
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
Scene scene = new Scene(root, 400, 400);
Button[] digitButtons = new Button[10];
for(int i = 0; i < 10; i++) {
final int buttonInd = i;
digitButtons[i] = new Button(Integer.toString(i));
digitButtons[i].setOnAction(e -> {
System.out.println("Button pressed " + ((Button) e.getSource()).getText());
lastClickedIndex = buttonInd;
});
}
root.setCenter(new HBox(digitButtons));
primaryStage.setScene(scene);
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
public类主扩展应用程序{
private int lastClickedIndex=-1;
@凌驾
公共无效开始(阶段primaryStage){
试一试{
BorderPane根=新的BorderPane();
场景=新场景(根,400400);
按钮[]数字按钮=新按钮[10];
对于(int i=0;i<10;i++){
最终int按钮nind=i;
digitButtons[i]=新按钮(Integer.toString(i));
数字按钮[i]。设置操作(e->{
System.out.println(“按下按钮”+((按钮)e.getSource()).getText());
lastClickedIndex=按钮D;
});
}
root.setCenter(新的HBox(数字按钮));
初级阶段。场景(场景);
primaryStage.show();
}捕获(例外e){
e、 printStackTrace();
}
}
公共静态void main(字符串[]args){
发射(args);
}
}
注意:无需获取索引,因为按钮
被精确指定为事件源:e.getSource()
public class Main extends Application {
private int lastClickedIndex = -1;
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
Scene scene = new Scene(root, 400, 400);
Button[] digitButtons = new Button[10];
for(int i = 0; i < 10; i++) {
final int buttonInd = i;
digitButtons[i] = new Button(Integer.toString(i));
digitButtons[i].setOnAction(e -> {
System.out.println("Button pressed " + ((Button) e.getSource()).getText());
lastClickedIndex = buttonInd;
});
}
root.setCenter(new HBox(digitButtons));
primaryStage.setScene(scene);
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}