按钮不存在';在JavaFX中创建场景后,请不要更改颜色

按钮不存在';在JavaFX中创建场景后,请不要更改颜色,javafx,Javafx,我想在构建场景后更改按钮的颜色。 我要做一艘战舰。当我放置一艘船时,许多按钮必须改变它们的颜色 所以,我对它做了一个函数,并对它进行了测试。我通过坐标过滤“OceanBox”中包含的框,当我得到真值时,我调用函数putBoatInside private void placeGuiBoat(整数x,整数y,整数方向,整数大小){ 列出所需的列表框; 如果(方向=水平){ ListBoxesBoatNeeded=IntStream.range(y,y+size).boxed().collect(C

我想在构建场景后更改按钮的颜色。 我要做一艘战舰。当我放置一艘船时,许多按钮必须改变它们的颜色

所以,我对它做了一个函数,并对它进行了测试。我通过坐标过滤“OceanBox”中包含的框,当我得到真值时,我调用函数putBoatInside

private void placeGuiBoat(整数x,整数y,整数方向,整数大小){
列出所需的列表框;
如果(方向=水平){
ListBoxesBoatNeeded=IntStream.range(y,y+size).boxed().collect(Collectors.toList());
试一试{
listBoxesBoatNeed.forEach(e->oceanBoxes.stream().filter(p->p.getX()==x和p.getY()==e).findFirst().orElse(null).putBoatInside());
}捕获(例外e){}
}
}
在拳击课上,我有这个

public void putBoatInside(){
此.setStyle(“-fx背景色:#000;”);
}
编辑

这里是我为解决这个问题而做的一个最小的可重复的例子,我发现这个问题并不存在

主要

包应用;
导入javafx.scene.layout.GridPane;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入java.util.stream.collector;
导入java.util.stream.IntStream;
导入GUI.BtnOcean;
导入javafx.application.application;
导入javafx.stage.stage;
导入javafx.scene.scene;
导入javafx.scene.control.Button;
公共类主扩展应用程序{
@凌驾
公共无效开始(阶段primaryStage){
试一试{
GridPane root=新的GridPane();
BtnOcean btn=新的BtnOcean(1,1);
BtnOcean btn1=新的BtnOcean(1,2);
BtnOcean btn2=新的BtnOcean(1,3);
BtnOcean btn3=新的BtnOcean(1,4);
BtnOcean btn4=新的BtnOcean(1,5);
ArrayList ocean=新的ArrayList(Arrays.asList(btn、btn1、btn2、btn3、btn4));
按钮btn5=新按钮(“更改”);
List List=IntStream.range(1,5).boxed().collect(Collectors.toList());
btn5.设定动作(j->{
list.stream();
});
root.add(btn,0,0);
root.add(btn1,1,0);
根添加(btn2,2,0);
root.add(btn3,3,0);
root.add(btn4,4,0);
root.add(btn5,5,0);
场景=新场景(根,1200800);
scene.getStylesheets().add(getClass().getResource(“application.css”).toExternalForm());
初级阶段。场景(场景);
primaryStage.show();
}捕获(例外e){
e、 printStackTrace();
}
}
公共静态void main(字符串[]args){
发射(args);
}
}
BtnOcean类

packagegui;
导入javax.swing.ImageIcon;
导入javafx.scene.control.Button;
导入javafx.scene.image.image;
导入javafx.scene.image.ImageView;
公共类BtnOcean扩展按钮{
私人INTX;
私营企业;
私有字符串cssProps=“-fx背景色:#fff;”+
“-fx边框颜色:#000000;”+
“-fx边框宽度:1px;”;
公共BtnOcean(整数x,整数y,字符串文本){
这个.x=x;
这个。y=y;
设置最小高度(60);
设置最小宽度(60);
设置方式(cssProps);
setText(文本);
}
公共BtnOcean(整数x,整数y){
这个.x=x;
这个。y=y;
设置最小高度(60);
设置最小宽度(60);
设置方式(cssProps);
}
公共无效putBoatInside(){
System.out.println(本文件);
此.setStyle(“-fx背景色:#000;”);
}

请..我不知道如何删除这个问题…我按照你说的做,它是有效的,所以我在搜索2小时后发现了问题…在我的代码中的某个地方,我丢失了框的引用。@kleopatraLet这是一次极好的学习体验。如果你最初发布了一个,我们可以为你节省2小时的搜索时间。@kleopatraLetng.:)我们经常要求人们阅读这里的常见问题,通常有一个很好的理由。