javafxにて別のAnchorPaneの操作
javafxにて別のAnchorPaneの操作
こんばんは、現在javaFXにて1つ目のAnchorPaneのテキストフィールドを2つ目のAnchorPaneのテキストフィールドに書き出す処理がしたいのですが上手くいきません。
これがメインクラスです。
[codeJavaFX]
public class Main extends Application{
@Override
public void start(Stage stage) throws Exception {
FXMLLoader loader = new FXMLLoader(getClass().getResource("MainScreen.fxml"));
AnchorPane root = loader.load();
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args){
launch(args);
}
}
[/code]
そしてこれがMainScreen.fxmlのコントローラーです。MainScreen.fxmlはAnchorPaneにテキストフィールドが置いてあるだけです。
これがメインクラスです。
[codeJavaFX]
public class Main extends Application{
@Override
public void start(Stage stage) throws Exception {
FXMLLoader loader = new FXMLLoader(getClass().getResource("MainScreen.fxml"));
AnchorPane root = loader.load();
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args){
launch(args);
}
}
[/code]
そしてこれがMainScreen.fxmlのコントローラーです。MainScreen.fxmlはAnchorPaneにテキストフィールドが置いてあるだけです。
Re: javafxにて別のAnchorPaneの操作
こんばんは、javaFXにて1つ目のAnchorPaneのテキストエリアに2つ目のAnchorPaneのテキストエリアの内容を書き出す処理がしたいのですがエラーが発生します。
これがメインクラスです。
[codeJavaFX]
package application;
public class Main extends Application{
@Override
public void start(Stage stage) throws Exception {
FXMLLoader loader = new FXMLLoader(getClass().getResource("MainScreen.fxml"));
AnchorPane root = loader.load();
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args){
launch(args);
}
}
[/code]
そしてこれがMainScreen.fxmlのコントローラーです。MainScreen.fxmlはAnchorPaneにテキストエリアと、もう一つのAnchorPaneを開くボタンが置いてあるだけです。
[codeJavaFX]
package application;
public class mainCon implements Initializable{
@FXML
TextArea textArea;
@FXML
Button button;
@Override
public void initialize(URL location, ResourceBundle resources) {
}
public void test(String melody){
textArea.appendText(melody);
}
//ボタンが押されたら実行
//ウィンドウを生成
@FXML
public void melodycreatewindow() throws IOException{
Stage stage = new Stage();
FXMLLoader loader = new FXMLLoader(getClass().getResource("subwindow.fxml"));
loader.load();
Parent root = loader.getRoot();
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
}
[/code]
そして以下がsubwindow.fxmlのコントローラーです。subwindow.fxmlはAnchorPaneにテキストエリアと、MainScreen.fxmlのテキストエリアに書き出すボタンがあります。
[codeJavaFX]
package application;
public class createmelodycon implements Initializable{
@FXML
TextArea textarea;
@FXML
Button button;
@Override
public void initialize(URL location, ResourceBundle resources) {
}
//ボタンが押された時に実行
@FXML
public void sendmelody(){
mainCon con = new mainCon();
con.test(textarea.getText());
}
}
[/code]
このようにして書き実行し、subwindowを開いてテキストエリアに文字を入力、ボタンを押すと以下のようなエラーがでます。
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1770)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1653)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Node.fireEvent(Node.java:8390)
at javafx.scene.control.Button.fire(Button.java:185)
at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3758)
at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3486)
at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2495)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:350)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:275)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$350(GlassViewEventHandler.java:385)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda$204/1399154129.get(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:404)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:384)
at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
at com.sun.glass.ui.View.notifyMouse(View.java:927)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$145(WinApplication.java:101)
at com.sun.glass.ui.win.WinApplication$$Lambda$36/2117255219.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1767)
... 50 more
Caused by: java.lang.NullPointerException
at application.SampleController.test(MainScreen.java:18) ←textarea.appendText(melody);の所
at application.SampleController2.action(createmelodycon.java:14) ←con.test(textarea.getText());の所
... 60 more
恐らくsubwindowを開いた事によりMainScreenが背面に移動し操作不可状態になっているのだと思います・・・。その場合の解決方法も分かりません。
何か解決法があればご教授ください。
これがメインクラスです。
[codeJavaFX]
package application;
public class Main extends Application{
@Override
public void start(Stage stage) throws Exception {
FXMLLoader loader = new FXMLLoader(getClass().getResource("MainScreen.fxml"));
AnchorPane root = loader.load();
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args){
launch(args);
}
}
[/code]
そしてこれがMainScreen.fxmlのコントローラーです。MainScreen.fxmlはAnchorPaneにテキストエリアと、もう一つのAnchorPaneを開くボタンが置いてあるだけです。
[codeJavaFX]
package application;
public class mainCon implements Initializable{
@FXML
TextArea textArea;
@FXML
Button button;
@Override
public void initialize(URL location, ResourceBundle resources) {
}
public void test(String melody){
textArea.appendText(melody);
}
//ボタンが押されたら実行
//ウィンドウを生成
@FXML
public void melodycreatewindow() throws IOException{
Stage stage = new Stage();
FXMLLoader loader = new FXMLLoader(getClass().getResource("subwindow.fxml"));
loader.load();
Parent root = loader.getRoot();
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
}
[/code]
そして以下がsubwindow.fxmlのコントローラーです。subwindow.fxmlはAnchorPaneにテキストエリアと、MainScreen.fxmlのテキストエリアに書き出すボタンがあります。
[codeJavaFX]
package application;
public class createmelodycon implements Initializable{
@FXML
TextArea textarea;
@FXML
Button button;
@Override
public void initialize(URL location, ResourceBundle resources) {
}
//ボタンが押された時に実行
@FXML
public void sendmelody(){
mainCon con = new mainCon();
con.test(textarea.getText());
}
}
[/code]
このようにして書き実行し、subwindowを開いてテキストエリアに文字を入力、ボタンを押すと以下のようなエラーがでます。
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1770)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1653)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Node.fireEvent(Node.java:8390)
at javafx.scene.control.Button.fire(Button.java:185)
at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3758)
at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3486)
at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2495)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:350)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:275)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$350(GlassViewEventHandler.java:385)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda$204/1399154129.get(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:404)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:384)
at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
at com.sun.glass.ui.View.notifyMouse(View.java:927)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$145(WinApplication.java:101)
at com.sun.glass.ui.win.WinApplication$$Lambda$36/2117255219.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1767)
... 50 more
Caused by: java.lang.NullPointerException
at application.SampleController.test(MainScreen.java:18) ←textarea.appendText(melody);の所
at application.SampleController2.action(createmelodycon.java:14) ←con.test(textarea.getText());の所
... 60 more
恐らくsubwindowを開いた事によりMainScreenが背面に移動し操作不可状態になっているのだと思います・・・。その場合の解決方法も分かりません。
何か解決法があればご教授ください。
Re: javafxにて別のAnchorPaneの操作
javaFXとJavaFX Scene Builder 2.0[VS2015の様なGUI入力](とeclipse)がインストール完了しました。コードを試してみたいと思います。
ルールhttp://dixq.net/board/board.htmlに則って環境と経緯の詳細を書き記してください。
ルールhttp://dixq.net/board/board.htmlに則って環境と経緯の詳細を書き記してください。
Re: javafxにて別のAnchorPaneの操作
JavaFXには詳しくないですが……。
元々のウィンドウ(に対応するクラスである)mainConクラスを使いたいのであれば,mainCon#melodycreatewindowの中でcreatemelodyconクラスのインスタンスに対して,自身のインスタンスを渡しておいて,
createmelodycon#sendmelodyの中ではmainConクラスの新しいインスタンスではなく,渡されたインスタンスを使う必要があるのではないでしょうか。
なので,このあたりを探ると,そもそも,
と、mainConクラスの新しいインスタンスを作ってしまっていますが、これは正しいのでしょうか。
元々のウィンドウ(に対応するクラスである)mainConクラスを使いたいのであれば,mainCon#melodycreatewindowの中でcreatemelodyconクラスのインスタンスに対して,自身のインスタンスを渡しておいて,
createmelodycon#sendmelodyの中ではmainConクラスの新しいインスタンスではなく,渡されたインスタンスを使う必要があるのではないでしょうか。
Re: javafxにて別のAnchorPaneの操作
返信ありがとうございます。と成りのトトロ さんが書きました:javaFXとJavaFX Scene Builder 2.0[VS2015の様なGUI入力](とeclipse)がインストール完了しました。コードを試してみたいと思います。
ルールhttp://dixq.net/board/board.htmlに則って環境と経緯の詳細を書き記してください。
OS:windows10pro
環境:Eclipse 4.4 Scene Builder 2.0
です。
Re: javafxにて別のAnchorPaneの操作
createmelodyconクラスのインスタンスに対して,自身のインスタンスを渡すという処理についてなのですが、文章をそのまま起こすとmainCon#melodycreatewindowの中でcreatemelodyconクラスのインスタンスに対して,自身のインスタンスを渡しておいて
[codeJavaFX]
@FXML
public void melodycreatewindow() throws IOException{
MainScreen ms = new MainScreen(); //自身のインスタンス
createmelodycon con = new createmelodycon(); //createmelodyconクラスのインスタンス
con = ms; //createmelodyconクラスのインスタンスに対して,自身のインスタンスを渡す・・・?
Stage stage = new Stage();
FXMLLoader loader = new FXMLLoader(getClass().getResource("subwindow.fxml"));
loader.load();
Parent root = loader.getRoot();
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
[/code]
となり型の不一致が起こります。インスタンスはクラスの実体という事は分かります。
インスタンスに対してインスタンスを渡すという処理について詳しく説明頂けると幸いです。
Re: javafxにて別のAnchorPaneの操作
mainConクラスの非staticメソッドの中なのですから,自身のインスタンスはthisです。ビブロ さんが書きました:createmelodyconクラスのインスタンスに対して,自身のインスタンスを渡すという処理についてなのですが、文章をそのまま起こすとmainCon#melodycreatewindowの中でcreatemelodyconクラスのインスタンスに対して,自身のインスタンスを渡しておいて
newしたものは自身とは異なるインスタンスです。
また,createmelodyconクラスのインスタンスも単純にnewすればよい,というものではないです。
例えば,FXMLLoader#getControllerでインスタンスを取得する必要がありますし,
値を渡すというのも代入する事を意味するのではなく,受け取るためのメソッドをcreatemelodyconクラスに定義して(値を引数に)mainCon#melodycreatewindowから呼び出す,ということを言っています。
Re: javafxにて別のAnchorPaneの操作
返信ありがとうございます。
頂いたアドバイスを元に以下のように組んでみました(宣言等省略)
ここまではこの書き方で合っているでしょうか?
頂いたアドバイスを元に以下のように組んでみました(宣言等省略)
public class mainCon {
public void test(String melody){
textarea.appendText(melody);
}
//ボタンが押されたら実行
//ウィンドウを生成
@FXML
public void action() throws IOException{
Stage stage = new Stage();
FXMLLoader loader = new FXMLLoader(getClass().getResource("subwindow.fxml"));
loader.load();
Parent root = loader.getRoot();
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
createmelodycon san = loader.getController(); //createmelodyconクラスのインスタンス
san.method(this); //createmelodyconクラスのインスタンスに対して,自身のインスタンスを渡す
}
}
Re: javafxにて別のAnchorPaneの操作
最初の回答にも書いた通り,JavaFXについては詳しくありませんが,
JavaFXの世界における標準的な書き方かどうかはわかりません。
コードの仕組みとしては合っていると思います。ビブロ さんが書きました:ここまではこの書き方で合っているでしょうか?
JavaFXの世界における標準的な書き方かどうかはわかりません。
Re: javafxにて別のAnchorPaneの操作
返信ありがとうございます。
この質問の目的である別のAnchorPaneのテキストエリアへの出力ですが、考え方は以下でよろしいでしょうか?
もしもこの考え方で合っている場合、①の何かの宣言では何を宣言すればいいのでしょう?インスタンスを格納できる型はあるのでしょうか?
この質問の目的である別のAnchorPaneのテキストエリアへの出力ですが、考え方は以下でよろしいでしょうか?
もしもこの考え方で合っている場合、①の何かの宣言では何を宣言すればいいのでしょう?インスタンスを格納できる型はあるのでしょうか?
Re: javafxにて別のAnchorPaneの操作
只今解決致しました。
先程の[①何かの宣言]の所にmainConのインスタンスを宣言した所、無事に動作しました。
ここで宣言したmethod()は言わばセッターの役割をしているんですね。
YuO様本当にありがとうございます。お世話になりました。
先程の[①何かの宣言]の所にmainConのインスタンスを宣言した所、無事に動作しました。
ここで宣言したmethod()は言わばセッターの役割をしているんですね。
YuO様本当にありがとうございます。お世話になりました。
Re: javafxにて別のAnchorPaneの操作
[雑談]javaFXの概要がわかりました。
「Eclipse 4.6 Neon[英語版]のみで作ったjavaFXプログラム」(..且つ、FXMLのサポートがつく"e(fx)clipse"プラグインを入れる。
http://csi.nisinippon.com/javafx01.png
「Scene Builder 2.0(JavaFX8のデザインをGUIで作成する)[1.0とは全く違うので注意]
http://csi.nisinippon.com/javafx02.png
「NetBeans IDE 8.2---Servlet---」
http://csi.nisinippon.com/javafx03.png
「Eclipse 4.6 Neon[英語版]のみで作ったjavaFXプログラム」(..且つ、FXMLのサポートがつく"e(fx)clipse"プラグインを入れる。
http://csi.nisinippon.com/javafx01.png
「Scene Builder 2.0(JavaFX8のデザインをGUIで作成する)[1.0とは全く違うので注意]
http://csi.nisinippon.com/javafx02.png
「NetBeans IDE 8.2---Servlet---」
http://csi.nisinippon.com/javafx03.png
Re: javafxにて別のAnchorPaneの操作
[雑談]
[java]版 [WFP]です。FXMLがxamlに相当する。「Scene Builder 2.0」がVS2015IDE(CommunityではBlend)に相当。(2016 年 5 月時点で”Java 8/JavaFX 8 の内容は .NET Framework 4.0 相当と考えてよいと思います”よのことです。)JavaはMac,Linuxにも対応。
主なマニュアルは、次の 4 つです。
---------------------------------------------------------
Java SE 8 API
---------------------------------------------------------
NET Framework のクラスライブラリに相当するもので、Java 全般のクラスライブラリです
。ちなみに、SE は、"Standard Edition" の略です。日本語にすると、
「標準版」とでもなるのでしょうが、標準でない版があるのかどうかは分かりません。
---------------------------------------------------------
JavaFX 8 API
---------------------------------------------------------
WPF のクラスライブラリに相当するもので、ファイルの I/O のような Java の基本的な機能に関係するクラスは含みません。
---------------------------------------------------------
JavaFX 8 Documentation
---------------------------------------------------------
JavaFX のプログラミングガイド、つまり、JavaFX 関係の API の使い方を解説するものです。
---------------------------------------------------------
JavaFX 8 Tutorials
---------------------------------------------------------
"tutorial" は、[取扱説明書]です。[指導書とか解説書]、あるいは[チュートリアル]
[補足的なマニュアル]
1.JavaFX CSS Reference Guide
----------------------------
2.Introduction to FXML
----------------------------
3.Lambda Expressions in Java 8
-------------------------------
4.Concurrency in JavaFX
-----------------------------
5.Java File I/O (NIO.2)
-----------------------------
---///「ある記事より」///---
実際に使ってみたらSwingよりも思いのほか簡単だった。
[JavaFXのSwingに対して以下のようなメリット]。
FXMLを使うことによりUIのレイアウト構造をコードから分離することができる ?
---------------------------------------------------------------------------
Swingではロジックとレイアウトがごちゃまぜになっていて、作るのは良いが、修正する
場合に困難が伴わなかったことがない。
その点、JavaFXはコードではレイアウトしないので保守性が高そうである。
----------------------------------------------------------------------------
FXMLはXML構造であるため、GUIのようなオブジェクトツリー構造を記述するのに適している ?
---------------------------------------------------------------------------------------
XMLであるためツールとの親和性が高い。(Scene Builderという外部ツールでレイアウトを編集できる。)
-----------------------------------------------------------------------------------------------
スキーマレス(なんでもあり)のXMLである。
----------------------------------------
(それによりカスタムコンポーネントなどの新しい要素も制限なく取り入れられる)
やってることも、実は単純だったりする。(手で作るのも難しくないと思われる。やりたくはないけど。)
--------------------------------------------------------------------------------------------------
バインディングはめんどくさい反面、とても便利で強力だったりする。
---------------------------------------------------------------------
CSSによる細かなレイアウトの調整やデコレーションが、プログラムコードとは分離して表現できる。
----------------------------------------------------------------------------------------------
(ただしウェブ的なcssとは、ちょっと違う。)
------------------------------------------
とのことです。
**サンプルも豊富にみつかったので以外に簡単かも知れません。フリーソフトなのでMSDN のように正確な資料
はなくVersionが違うと動作が異なる。
[java]版 [WFP]です。FXMLがxamlに相当する。「Scene Builder 2.0」がVS2015IDE(CommunityではBlend)に相当。(2016 年 5 月時点で”Java 8/JavaFX 8 の内容は .NET Framework 4.0 相当と考えてよいと思います”よのことです。)JavaはMac,Linuxにも対応。
主なマニュアルは、次の 4 つです。
---------------------------------------------------------
Java SE 8 API
---------------------------------------------------------
NET Framework のクラスライブラリに相当するもので、Java 全般のクラスライブラリです
。ちなみに、SE は、"Standard Edition" の略です。日本語にすると、
「標準版」とでもなるのでしょうが、標準でない版があるのかどうかは分かりません。
---------------------------------------------------------
JavaFX 8 API
---------------------------------------------------------
WPF のクラスライブラリに相当するもので、ファイルの I/O のような Java の基本的な機能に関係するクラスは含みません。
---------------------------------------------------------
JavaFX 8 Documentation
---------------------------------------------------------
JavaFX のプログラミングガイド、つまり、JavaFX 関係の API の使い方を解説するものです。
---------------------------------------------------------
JavaFX 8 Tutorials
---------------------------------------------------------
"tutorial" は、[取扱説明書]です。[指導書とか解説書]、あるいは[チュートリアル]
[補足的なマニュアル]
1.JavaFX CSS Reference Guide
----------------------------
2.Introduction to FXML
----------------------------
3.Lambda Expressions in Java 8
-------------------------------
4.Concurrency in JavaFX
-----------------------------
5.Java File I/O (NIO.2)
-----------------------------
---///「ある記事より」///---
実際に使ってみたらSwingよりも思いのほか簡単だった。
[JavaFXのSwingに対して以下のようなメリット]。
FXMLを使うことによりUIのレイアウト構造をコードから分離することができる ?
---------------------------------------------------------------------------
Swingではロジックとレイアウトがごちゃまぜになっていて、作るのは良いが、修正する
場合に困難が伴わなかったことがない。
その点、JavaFXはコードではレイアウトしないので保守性が高そうである。
----------------------------------------------------------------------------
FXMLはXML構造であるため、GUIのようなオブジェクトツリー構造を記述するのに適している ?
---------------------------------------------------------------------------------------
XMLであるためツールとの親和性が高い。(Scene Builderという外部ツールでレイアウトを編集できる。)
-----------------------------------------------------------------------------------------------
スキーマレス(なんでもあり)のXMLである。
----------------------------------------
(それによりカスタムコンポーネントなどの新しい要素も制限なく取り入れられる)
やってることも、実は単純だったりする。(手で作るのも難しくないと思われる。やりたくはないけど。)
--------------------------------------------------------------------------------------------------
バインディングはめんどくさい反面、とても便利で強力だったりする。
---------------------------------------------------------------------
CSSによる細かなレイアウトの調整やデコレーションが、プログラムコードとは分離して表現できる。
----------------------------------------------------------------------------------------------
(ただしウェブ的なcssとは、ちょっと違う。)
------------------------------------------
とのことです。
**サンプルも豊富にみつかったので以外に簡単かも知れません。フリーソフトなのでMSDN のように正確な資料
はなくVersionが違うと動作が異なる。
Re: javafxにて別のAnchorPaneの操作
[訂正][WFP]は[WPF]の誤りでした。
「参考」
WPF とは何かに対する Microsoft の答えは、Visual Studio 2008 のヘルプの「Windows Presentation Foundation の概要」(Visual Studio 2010 の場合は、「WPF の概要)の項にある以下の文章の中にあります。
「Windows Presentation Foundation (WPF) は、魅力的な外観のユーザーエクスペリエンスを持つ Windows クライアントアプリケーションを作成するための次世代プレゼンテーションシステムです。」
原文は
"Windows Presentation Foundation (WPF) is a next-generation presentation system for building Windows client applications with visually stunning user experiences."
「参考」
WPF とは何かに対する Microsoft の答えは、Visual Studio 2008 のヘルプの「Windows Presentation Foundation の概要」(Visual Studio 2010 の場合は、「WPF の概要)の項にある以下の文章の中にあります。
「Windows Presentation Foundation (WPF) は、魅力的な外観のユーザーエクスペリエンスを持つ Windows クライアントアプリケーションを作成するための次世代プレゼンテーションシステムです。」
原文は
"Windows Presentation Foundation (WPF) is a next-generation presentation system for building Windows client applications with visually stunning user experiences."