когда я отлаживаю, программа hiddenMenu имеет значение, когда достигает метода инициализации.Однако когда я позже создаю Большой Круг и добавляю на него кликвент, я хочу, чтобы скрытое меню было невидимым.
Когда я пробую hiddenMenu.setVisible (false), я получаю nullpointerexception.Я знаю, что ничего не изменил на пути.Я что-то забыл или пропустил?
Я пробовал hiddenMenu.setVisible (false);без успеха.
вот код:
public class MainWindow extends Application implements Initializable {
@FXML
private AnchorPane root;
@FXML
private ComboBox<String> chooseFigureComboBox;
@FXML
private Button btnCreate;
@FXML
private HBox hiddenMenu;
@FXML
private ColorPicker cp;
@FXML
private Label lblColor;
@FXML
private Label lblSize;
@FXML
private Slider sli;
private Shape selected;
private List<Node> selectionList = new LinkedList<>();
private static MainWindow mainWindow;
private FigureHandler figureHandler;
private ObservableList<String> figures;
private ArrayList<Circle>circles;
@Override
public void start(Stage scene) throws Exception{
MainWindow.mainWindow = this;
figureHandler = FigureHandler.getInstance();
figureHandler.setMainWindow(mainWindow);
root = FXMLLoader.load(getClass().getResource("../grafik/mainWindow.fxml"));
scene.setTitle("Hello World");
scene.setScene(new Scene(root, 800, 600));
scene.show();
}
public void addLargeCircle(){
Circle circle = new Circle();
circle.setRadius(100);
circle.setFill(Color.RED);
circle.addEventHandler(MouseEvent.MOUSE_CLICKED,e->{
System.out.println("Ett klick skedde på cirkeln!");
hiddenMenu.setVisible(false);
});
circle.addEventHandler(MouseEvent.MOUSE_DRAGGED,e->{
moveCircle(e,circle);
});
root.getChildren().add(circle);
//circles.add(circle);
//figureHandler.addCircleToList(circle);
}
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
figures = FXCollections.observableArrayList("small Circle","medium circle","large Circle");
chooseFigureComboBox.setItems(figures);
circles = new ArrayList<>();
cp.setValue(Color.RED);
cp.setOnAction(e->{
System.out.println("Changed color");
});
}
// пропуск некоторых методов, не имеющих отношения к проблеме.
Ожидается, что он не покажет, чтоя получаю это NPE.