gpt4 book ai didi

java - 如何在java fx中的事件处理程序中引用实际单击的按钮?

转载 作者:行者123 更新时间:2023-12-01 20:17:25 25 4
gpt4 key购买 nike

问题是我有二维按钮数组,我想动态地向每个按钮添加 setOnClick 方法,这会更改它们的文本,这是一个问题,因为我不能在其中使用变量,例如myArray[i][j] 所以实际上我无法引用我的按钮。

最佳答案

我借鉴了你们俩的一些想法,对此我非常感谢。我动态创建了按钮,并且还使用了扩展按钮类的新类来向按钮添加水平和垂直值。现在看起来像这样:

package sample;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.*;
import javafx.stage.Stage;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;

public class Main extends Application {

@Override
public void start(Stage primaryStage) throws Exception{

primaryStage.setTitle("Hello World");
GridPane root = new GridPane();
primaryStage.setScene(new Scene(root, 1000, 600));
MyButton[][] buttonArray = new MyButton[10][10];
HBox[] hboxArray = new HBox[10];


for(int i=0;i<10;i++)
{
hboxArray[i]=new HBox();
for(int j=0;j<10;j++)
{
MyButton button =new MyButton(i,j);
button.setMinSize(100,50);
buttonArray[i][j]=button;
button.setOnAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent e) {
button.setText("button"+button.getH()+","+button.getV());
//where getH is get horizontal and getV is get vertical
button.setDisable(true);
}
});
hboxArray[i].getChildren().add(buttonArray[i][j]);
}
}

for(int i=0;i<10;i++)
{
root.add(hboxArray[i],1,i);
}

primaryStage.show();
}


public static void main(String[] args) {
launch(args);
}

}

关于java - 如何在java fx中的事件处理程序中引用实际单击的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45525181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com