0
メニューバーがありませんので、アプリケーションをKeyCombinationに限定してイベントを生成しています。私はキーの組み合わせが働いているが、コントローラを正しく使用していないと感じている。私はコントローラ内で新しいシーンを編集する必要がありますが、代わりにKeyCombinationイベントのtry/catch内でそうしています。KeyCombinationから新しいシーンを正しく作成するJavaFX
私は新しいシーン/ビューを作成したクラスSettingsController.java
内のシーンに対するすべての変更をしたいと思い
final KeyCombination settingsCMD = new KeyCodeCombination(KeyCode.S, KeyCombination.CONTROL_DOWN);
scene.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>()
{
@Override
public void handle(KeyEvent event)
{
if (settingsCMD.match(event))
{
System.out.println("CTRL + S was pressed on " + name + " display\n" +
"Opening Settings Scene");
/*
* This is where we need to launch a scene for settings
*/
try
{
Parent root = FXMLLoader.load(getClass().getResource("/sample/view/settingsscreen.fxml"));
Stage settingsStage = new Stage();
settingsStage.setTitle("Settings");
settingsStage.setScene(new Scene(root, 500 , 400));
settingsStage.show();
// This really needs to be done in the controller. How do I do this?
JSON jsonTools = new JSON();
jsonTools.readJSONSettings();
jsonTools.writeJSONSettings();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
});
SettingsController.java
public class SettingsController
{
@FXML private TextField hostname;
public String getText()
{
String textProp = textProperty().get();
System.out.println("testProperty is " + textProp + "\n");
return textProp;
}
public void setText(String value)
{
textProperty().set(value);
}
private StringProperty textProperty()
{
return hostname.textProperty();
}
}
呼び出すことができます。このリファレンスでは
:あなたは
FXMLLoader
からのビューコントローラクラスへの参照を取得することができますあなたがしていることを理解しているので、提供されたコードの中に置いてください。 – DevinMこの回答はあなたにいくつかの追加のヘルプを提供する可能性があります[http://stackoverflow.com/questions/36585761/store-dynamic-screen-with-multiple-stages/36612093#36612093](http://stackoverflow.com/questions/) 36585761 /店舗用ダイナミックスクリーン - 複数ステージ/ 36612093#36612093)。 – jns
助けてくれてありがとう、これはトリックでした! – DevinM