带控制器按钮的JAVAFX
我试图从控制器2中的控制器1到达1按钮,该按钮不是静态的,因此我无法到达他:/带控制器按钮的JAVAFX,java,button,javafx,controller,Java,Button,Javafx,Controller,我试图从控制器2中的控制器1到达1按钮,该按钮不是静态的,因此我无法到达他:/ public class NeuesSpielController { @FXML public Button sStarten; @FXML public Button farbeAuswaehlen; public void farbeAuswaehlen() throws IOException, InterruptedException { Stag
public class NeuesSpielController {
@FXML
public Button sStarten;
@FXML
public Button farbeAuswaehlen;
public void farbeAuswaehlen() throws IOException, InterruptedException {
Stage test = new Stage();
AnchorPane test2 = FXMLLoader.load(getClass().getResource("Farbwahl.fxml"));
test.setScene(new Scene(test2));
test.setMinHeight(200.00);
test.setMinWidth(400.00);
test.show();
}
这是我的第二个控制器
public class FarbwahlController {
private MainController main;
@FXML
Button blau;
@FXML
Button rot;
@FXML
Button schwarz;
@FXML
Button weiss;
@FXML
Button gruen;
@FXML
Button gelb;
@FXML
Label bannerFarbe;
static Spielfigur figur;
public void initialize() throws IOException {
figur = NeuesSpielController.getSpielfigur();
if (figur != null) {
if (figur.farbe == null) {
bannerFarbe.setText(figur.spielernameKomplett() + " " + bannerFarbe.getText());
}else{
FXMLLoader loader = new FXMLLoader(getClass().getResource("NeuesSpiel.fxml"));
NeuesSpielController controller = loader.getController();
weiss.getScene().getWindow().hide();
在这一点上,我想从控制器1到达“sStarten”按钮,以便解锁它
controller.sStarten.setDisable(true);
}
}
@FXML
public void wahlBlau() throws IOException {
if (figur.farbe == null) {
figur.farbe = Farbe.BLAU;
}
blau.setDisable(true);
NeuesSpielController.setSpielfigur(figur);
initialize();
}
public void wahlGelb() throws IOException {
if (figur.farbe == null) {
figur.farbe = Farbe.GELB;
}
gelb.setDisable(true);
NeuesSpielController.setSpielfigur(figur);
initialize();
}
public void wahlGruen() throws IOException {
if (figur.farbe == null) {
figur.farbe = Farbe.GRUEN;
}
gruen.setDisable(true);
NeuesSpielController.setSpielfigur(figur);
initialize();
}
public void wahlRot() throws IOException {
if (figur.farbe == null) {
figur.farbe = Farbe.ROT;
}
rot.setDisable(true);
NeuesSpielController.setSpielfigur(figur);
initialize();
}
public void wahlSchwarz() throws IOException {
if (figur.farbe == null) {
figur.farbe = Farbe.SCHWARZ;
}
schwarz.setDisable(true);
NeuesSpielController.setSpielfigur(figur);
initialize();
}
public void wahlWeiss() throws IOException {
if (figur.farbe == null) {
figur.farbe = Farbe.WEISS;
}
weiss.setDisable(true);
NeuesSpielController.setSpielfigur(figur);
initialize();
}
public void init(MainController mainController) {
main = mainController;
}
}
我的想法是按下“farbeAuswaehlen”按钮,一个新的舞台就要开始了,玩家可以在那里选择颜色。当每个人都选择了自己的颜色时,窗口将消失,sStarten按钮将解锁,以便程序继续 阅读用两种不同语言编写的代码非常困难SIM抱歉:/I我是初学者,这样对我来说更容易您甚至不需要加载FXML,更不用说显示它了。因为您没有加载它,所以控制器将为null,并且
controller.sStarten.setDisable(true)代码>将给出空指针异常。即使您确实加载了它,也不会显示它,因此您将禁用一个实际上不可见的按钮,这是毫无意义的。