JavaFXについてのまとめ③
JavaFXをメインクラスとFXMLとコントロールクラスに分ける
まずFXMLとコントローラークラスとCSSを作ります
JavaFXapp.javaが置かれているjavafxappフォルダ[選択]
- メニューのファイル > 新規ファイル をクリック
- JavaFX > 空のFXML を[選択] 次へ
- FXML名を View と書きます。(適当)
- パッケージがjavafxappとなっています。未記入なら選択して 次へ
- Javaコントローラーの使用にチェックを入れます。 次へ
- Cascading Style Sheetsの使用にチェックを入れて 終了 を押します。
このようにjavafxappプロジェクト下に出来ました。
メインクラスとFXMLを関連付けます
JavaFXApp.javaを下記のコードに書き換えます
package javafxapp; import java.io.IOException; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; public class JavaFXApp extends Application { @Override public void start(Stage primaryStage) throws IOException { primaryStage.setTitle("ウィンドウのタイトル"); Parent view = FXMLLoader.load(getClass().getResource("View.fxml")); primaryStage.setScene(new Scene(view, 800, 600)); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
Parent view = FXMLLoader.load(getClass().getResource("View.fxml")); primaryStage.setScene(new Scene(view, 800, 600));
この2行でView.fxmlと関連付けています。
コントロールクラスを設定します
ViewControllerの説明
import java.net.URL; import java.util.ResourceBundle; import javafx.fxml.Initializable; public class ViewController implements Initializable { @Override public void initialize(URL url, ResourceBundle rb) { } }
コントローラークラスは色んな書き方があるようですが、自己流で書いていきます。
Initializableインタフェースクラスを実装しています。
Initializableは初期化クラス。このインタフェースを実装する事により
ウィンドウが生成された時に、一番最初に実行されるメソッドがinitializeメソッドとなります。
ViewControllerに処理を書きます。
package javafxapp; import java.net.URL; import java.util.ResourceBundle; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.web.WebEngine; import javafx.scene.web.WebView; public class ViewController implements Initializable { @FXML private WebView WebViewArea = new WebView(); @Override public void initialize(URL url, ResourceBundle rb) { WebEngine engine = WebViewArea.getEngine(); engine.load("https://www.google.co.jp/"); } @FXML protected void onGoogle(ActionEvent event) { WebEngine engine = WebViewArea.getEngine(); engine.load("https://www.google.co.jp/"); } @FXML protected void onYahoo(ActionEvent event) { WebEngine engine = WebViewArea.getEngine(); engine.load("http://www.yahoo.co.jp/"); } }
ViewController書き換え後の説明
import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.web.WebEngine; import javafx.scene.web.WebView;
FXMLをインポートする事により@FXMLでメソッド名がFXMLに記述した処理名と関連付けされます。
WebEngineとWebViewはウェブを表示させるものです。
@FXML private WebView WebViewArea = new WebView();
WebViewAreaオブジェクトというコントロール要素をnewしています。
public void initialize(URL url, ResourceBundle rb) { WebEngine engine = WebViewArea.getEngine(); engine.load("https://www.google.co.jp/"); }
initializeは最初に実行されるメソッドです。
WebViewAreaというウェブを表示させる要素にgoogleを表示させています。
@FXML protected void onGoogle(ActionEvent event) { WebEngine engine = WebViewArea.getEngine(); engine.load("https://www.google.co.jp/"); }
onGoogleの処理が実行されるとGoogleがロードされます。
onYahooも同じようにYahooがロードされます。
JavaFXについてのまとめ①
http://jocoroo.hatenablog.com/entry/2014/11/20/204906
JavaFXについてのまとめ②
http://jocoroo.hatenablog.com/entry/2014/12/07/183013
JavaFXについてのまとめ③[ココ]
http://jocoroo.hatenablog.com/entry/2014/12/08/020258
JavaFXについてのまとめ④
http://jocoroo.hatenablog.com/entry/2014/12/08/032056