gpt4 book ai didi

java - javafx中的按钮颜色变化

转载 作者:行者123 更新时间:2023-12-04 01:58:16 24 4
gpt4 key购买 nike

这是我绘制巴士座位的代码。每个Button代表在 GridPane 中绘制的座位.当有人点击座位时,我想将座位颜色从绿色更改为黄色。到目前为止,我已经这样做了。如果我单击按钮,它会在输出窗口中打印“hellow world”。但是按钮颜色在 UI 中不会改变。这是我的代码:

public static GridPane drawBus(int rows, int col, String ss){
GridPane table = new GridPane();
table.setHgap(5);
table.setVgap(5);
table.setAlignment(Pos.CENTER);
String seatName;

if(ss.equals("ROW WISE")||ss.equals("Row Wise")||ss.equals("row wise")){
for(int i=0; i<rows; i++){

for(int j=0;j<col; j++)
{
seat=new Button();
seat.setAlignment(Pos.CENTER);
seat.setPrefSize(80, 31);

seatName=numToString(i+1)+(j+1);
seat.setText(seatName);
seat.setStyle("-fx-background-color: MediumSeaGreen");


seat.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {

seat.setStyle("-fx-background-color: Yellow");
System.out.println("Hello World!");

}
});

busSeatList.put(seatName, 0);

//add them to the GridPane
table.add(seat, j, i); // (child, columnIndex, rowIndex)

}


}
}
else
{
for(int i=0; i<rows; i++){

for(int j=0;j<col; j++)
{
seat=new Button();
seat.setAlignment(Pos.CENTER);
seat.setPrefSize(80, 31);

seatName=(i+1)+numToString(j+1);
seat.setText(seatName);
seat.setStyle("-fx-background-color: MediumSeaGreen");


seat.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
//seat.setStyle("-fx-background-color: Yellow");

}
});



busSeatList.put(seatName, 0);
//add them to the GridPane
table.add(seat, j, i); // (child, columnIndex, rowIndex)


}


}


}


return table;
}

最佳答案

使用已经实现此功能的类并使用样式表会更容易。 ToggleButton是一个适合您需求的类:

ToggleButton btn = new ToggleButton("Say 'Hello World'");
btn.setOnAction((ActionEvent event) -> {
System.out.println("Hello World!");
});

...
scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm());

样式文件

.toggle-button {
-fx-background-color: green;
}

.toggle-button:selected {
-fx-background-color: yellow;
}

顺便说一句:您的代码中的问题可能是使用字段( seat )来存储按钮。这样如果你按 任何 按钮,最后创建的将始终是修改的。使用 final如果您想继续使用您的实现,则在内部循环中声明局部变量。

关于java - javafx中的按钮颜色变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49149502/

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