.FXML ファイルを使用した JavaFX のアプリがあり、シーンにボタンを追加します。次に、アクセラレータを追加しようとしましたが、起動すると NullPointerException がスローされます。なぜうまくいかないのか、どうすれば解決できるのか。
@FXML
Button addQuickNote;
@FXML
public void handlequickNote(ActionEvent e) {
String text = SampleController.getSelectedText();
if (text != null) {
SampleController.profileManager.insertNote(DataParser.getNote(text));
}
}
@Override
public void initialize(URL url, ResourceBundle rb) {
addQuickNote.getScene().getAccelerators().put(new KeyCodeCombination(KeyCode.Q, KeyCombination.SHORTCUT_DOWN), new Runnable() {
@Override
public void run() {
addQuickNote.fire();
}
});
}
私の .fxml は、アプリのモジュール全体が含まれているため、かなり複雑なので、ボタンのある行のみを貼り付けます。ボタンはツールバーに配置されます。
<Button fx:id="addQuickNote" mnemonicParsing="false" onAction="#handlequickNote" prefWidth="77.0" text="Z tekstu" />
メイン シーンの一部として .fxml を読み込んでいます。私はこのコードでこれをやっています。
try {
panel = FXMLLoader.load(getClass().getResource("Notes.fxml"));
} catch (IOException ex) {
showErrorDialog ....;
}
rightPanel.getChildren().add(panel);
mainPanel.setRight(rightPanel);