在Java中更改背景颜色的RadioButton
伙计们,我正在尝试创建3个单选按钮,它们将改变我在JavaFX中的背景颜色。我被卡住了,我得到了updateBackGround方法中找不到的错误符号,特别是pane1.setBackgroundnew Java找不到pane1符号。请帮帮我。非常感谢你。下面是我的代码在Java中更改背景颜色的RadioButton,java,javafx,background-color,Java,Javafx,Background Color,伙计们,我正在尝试创建3个单选按钮,它们将改变我在JavaFX中的背景颜色。我被卡住了,我得到了updateBackGround方法中找不到的错误符号,特别是pane1.setBackgroundnew Java找不到pane1符号。请帮帮我。非常感谢你。下面是我的代码 import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.sce
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.scene.paint.Color;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.CornerRadii;
public class Project2 extends Application
{
public RadioButton RedButton;
public RadioButton BlueButton;
public RadioButton GreenButton;
public static void main(String[] args) {
launch(args);
}
public void start(Stage primaryStage)
{
Pane myPane1 = pane1();
Scene scene1 = new Scene(myPane1);
primaryStage.setScene(scene1);
primaryStage.setTitle("HAI VO");
primaryStage.show();
}
public Pane pane1()
{
ToggleGroup group1 = new ToggleGroup();
RedButton = new RadioButton("RED");
RedButton.setToggleGroup(group1);
RedButton.setOnAction(event -> updateBackGround());
BlueButton = new RadioButton("BLUE");
BlueButton.setToggleGroup(group1);
BlueButton.setOnAction(event -> updateBackGround());
BlueButton.setSelected(true);
GreenButton = new RadioButton("Green");
GreenButton.setToggleGroup(group1);
GreenButton.setOnAction(event -> updateBackGround());
GridPane pane1 = new GridPane();
pane1.add(RedButton,5,0);
pane1.add(GreenButton,10,0);
pane1.add(BlueButton,20,0);
pane1.setHgap(5);
pane1.setVgap(5);
pane1.setPadding(new Insets(20,20,20,20));
updateBackGround();
return pane1;
}
public void updateBackGround()
{
if (RedButton.isSelected()) {
pane1.setBackground(new Background(new BackgroundFil(Color.RED,CornerRadii.EMPTY, Insets.EMPTY)));
}
if (BlueButton.isSelected()) {
pane1.setBackground(new Background(new BackgroundFill(Color.BLUE,CornerRadii.EMPTY, Insets.EMPTY)));
}
if (GreenButton.isSelected()) {
pane1.setBackground(new Background(new BackgroundFill(Color.GREEN,CornerRadii.EMPTY, Insets.EMPTY)));
}
}
}
`
您既有一个返回窗格的方法pane1,也有一个局部变量pane1,它是一个GridPane
稍后,在updateBackground中,您将引用pane1,它看起来像是对类成员或局部变量的引用,但updateBackground中既没有类成员,也没有名为pane1的变量
updateBackground没有看到在pane1方法中声明的pane1变量。它也看不到在start中创建的myPane1窗格,只有从SetScene1中设置的scene1检索才能访问该窗格
这主要是Java的作用域规则问题,并不特定于JavaFX。您既有一个返回窗格的方法pane1,也有一个局部变量pane1,它是一个GridPane
稍后,在updateBackground中,您将引用pane1,它看起来像是对类成员或局部变量的引用,但updateBackground中既没有类成员,也没有名为pane1的变量
updateBackground没有看到在pane1方法中声明的pane1变量。它也看不到在start中创建的myPane1窗格,只有从SetScene1中设置的scene1检索才能访问该窗格
这主要是Java的作用域规则问题,并不特定于JavaFX。这是否有帮助:这是否有帮助:我明白了,所以该方法无法识别我的变量。你对如何解决这个问题有什么建议吗?我试图将Pane1方法重命名为其他名称,但到目前为止不起作用。@HaiVo-重命名使方法和变量不具有相同的Pane1名称是好的,可以减少混淆。我看过JavaFX,但没有在任何实际工作中使用它,因此可能与任何建议不符…我在pane1中看到您正在设置。setOnActionevent->updateBackGround-pane1确实可以访问该变量,所以可能是.setOnActionevent->updateBackGroundpane1并向方法updateBackGroundPane p中添加一个参数,使其内部为p.setBackground…好的,我让它工作了,非常感谢您的帮助。在隔离期间保持安全。我明白了,所以该方法无法识别我的变量。你对如何解决这个问题有什么建议吗?我试图将Pane1方法重命名为其他名称,但到目前为止不起作用。@HaiVo-重命名使方法和变量不具有相同的Pane1名称是好的,可以减少混淆。我看过JavaFX,但没有在任何实际工作中使用它,因此可能与任何建议不符…我在pane1中看到您正在设置。setOnActionevent->updateBackGround-pane1确实可以访问该变量,所以可能是.setOnActionevent->updateBackGroundpane1并向方法updateBackGroundPane p中添加一个参数,使其内部为p.setBackground…好的,我让它工作了,非常感谢您的帮助。在隔离期间保持安全。