Javafxの紹介
Javaのグラフィカルインターフェイスライブラリに言及すると、通常、SwingまたはAlling AWTが聞こえます。多くの学校やトレーニングクラスも、これら2つのテクノロジーを教えています。しかし、実際、両方の技術は長い間時代遅れです。スイングを学ぶことは難しくありませんが、実際にはインターフェイスを使用して書くことは非常に困難です。インターフェイスとコードは分離されていないため、書くときはコードを多数の座標で満たす必要があり、変更することは非常に困難です。この点で最良のことはMicrosoftのWPFであり、誰がそれを使用できるか、誰がそれを知っているかを言うことしかできません。
もちろん、クライアントのグラフィックプログラムを書くことはJavaの弱点ですが、Javaはこの努力をあきらめていません。本日紹介されたJavafxは、Javaがグラフィカルインターフェイスプログラムを作成するための最新のテクノロジーです。歴史的な負担なしにJavaでグラフィカルインターフェイスプログラムを作成する予定がある場合は、Javafxを使用することを強くお勧めします。
これは、Oracleの公式ウェブサイトのJavafxのリソースとドキュメントです。
これは公式のサンプルプログラムであり、Javafxセクションを参照して使用方法を学ぶことができます。以下は、フラクタルJavafxプログラムの1つです。上記の番号をクリックすると、異なる顕微鏡ディスプレイを入力できます。ウイルスの顕微鏡の世界を見ているように感じますが、これは非常に衝撃的です。
インストール方法
JDK 8の最新バージョンがインストールされている限り、Javafxライブラリを使用できます。インストールされていない場合は、迅速にインストールを開始します。
すぐに始めましょう
最初のプログラム
新しいプロジェクトを作成し、次のクラスを作成し、コンパイルして実行して結果を確認します。このプログラムを説明する必要はありません。スイングやその他のグラフィカルインターフェイスフレームワークの学習の経験がある場合は、このコードを理解するのは非常に簡単です。もちろん、Javafxは新しいものなので、Java 8 -Lambda Expressionsの新機能も使用しています。
package yitian.javafxsample;import javafx.application.Application;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.layout.StackPane;import javafx.stage.Stage;public class HelloJavaFX extends Application {@Override public void start(Stage primaryStage) throws Exception {Button btn = new button(); btn.settext( "hello、world"); btn.setOnaction(event-> {system.out.println( "hello、world!");}); new stackpane(); root.getChildren(); root.getChildren()。 world! "); primarystage.setscene(seence); primarystage.show();} public static void main(string [] args){launch(args);}}}実行中のスクリーンショットは次のとおりです。
ユーザー入力
このプログラムは、ユーザーログインの状況を処理するために使用できます。コードは次のとおりで、重要な部分がコメントされています。コードの最後の部分では、SetonAction関数を使用してボタンにクリックイベントを追加すると、ボタンがクリックされるとテキストが表示されます。
パブリッククラスuserininputs extends application {@override public void start(ステージプライマリステージ)スロー例外{//グリッドレイアウトgridpane grid = new gridpane(); grid.setalignment(pos.center); // grid vertical spacing grid.sethgap(10);挿入図(25、25、25、25)); 1); //タグとテキストボックスボックスの追加username = new label( "username:"); grid.add(username、0、1); textfield usertextfield = new Textfield(); grid.add(usertextfield、1); //タグとパスワードボックスの追加ラベルPW = new = new = new = pw = pw = pw = new box passwordfield(); grid.add(pwbox、1、2); // [提出]ボタンボタンBtn = new Button( "login"); hbox hbbtn = new hbox(10); hbbtn.setalignment(pos.bottom_right); hbbtn.getChildren()。 ActionTarget = new Text(); grid.add(ActionTarget、1、6); btn.setOnaction(event-> {ActionTarget.setFill(color.firebrick); ActionTarget.Settext( "login");}); primarystage.settitle( "Javafx welcome"); Primarystage.show(String); shshow(); {launch(args);}}実行中のプログラムのスクリーンショットは次のとおりです。
このプログラムは実際には難しくありません。グリッドレイアウトを使用してから、各要素をグリッドに追加します。グリッドレイアウトの属性の意味については、公式の数字を参照してください。
FXMLでユーザーインターフェイスを設計します
最新のグラフィカルインターフェイスフレームワークは、インターフェイスとコードの分離をサポートし、より一般的に使用される記述言語は、QTのQMLやWPFのXAMLなどのXMLです。もちろん、JavafxにはFXMLと呼ばれる同様の言語もあります。 FXMLを詳細に知る必要がある場合は、Oracleの公式WebサイトでFXMLの記事紹介を参照できます。
上記の小さな例をFXMLで書き直しましょう。各部分にコメントされています。他の同様の記述言語を学んだ場合、これらは実際に類似していることがわかります。注意すべき唯一のことは、レイアウトのFX:コントローラー属性です。これはコントローラーを指定し、コントローラーの機能は、インターフェイスの対応するコードを記述することです。
<?xml version = "1.0" encoding = "utf-8"?> <! - インポートクラス - > <?javafx.geometry.insets?> <?javafx.scene.control。*?> <?import javafx.scene.layout javafx.scene.text.text?> <! - set layout-> <gridpane xmlns = "http://javafx.com/javafx" xmlns:fx = "http://javafx.com/fxml" fx:controller = " prefWidth = "600.0" alignment = "center" hgap = "10" vgap = "10"> <padding> <insets> <insets> <insets> <25 "right =" 25 "bottom =" 10 "left =" 25 "/> </<! gridpane.columnspan = "2"> <font> <font name = "consolas" size = "20"/> </font> </text> <label text = "username:" gridpane.columnindex = "0" gridpane.rowindex = "1" 1 "/> <textfield.columnindex =" 1 fridpane. text = "password:" gridpane.columnIndex = "0" gridpane.rowindex = "2"/> <passwordfield fx:id = "passwordfield" gridpane.columnindex = "1" gridpane.rowindex = "2"/> <! - プロンプトテキスト - > Gridpane.RowIndex = "4"> <ボタンテキスト= "Password" onaction = "#ashpasswordbutton"/> </hbox> <text fx:id = "hinttext" gridpane.columnindex = "0" gridpane.columnspan = "2" gridpane.halignment = "" gridpane.halignment "
以下は、標準のJavaクラスであるこのFXMLファイルに対応するコントローラーです。 FX:ID属性で指定されたIDは、FXMLのID属性をコントローラーのクラスフィールドとして宣言でき、インターフェイスコンポーネントと対話できます。同様に、オニクトによって宣言されたイベントハンドラーは、コントローラーのメソッドです。これらのフィールドと方法は、@FXMLアノテーションを使用して注釈を付ける必要があることに注意してください。
javafx.event.actionEvent;インポートjavafx.fxml.fxml;インポートjavafx.scene.control.passwordfield; Import javafx.scene.text.text; public class Controller {@fxml private Text Hinttext; {hinttext.settext( "show password:" + passwordfield.getText());}}変更する最後のことはメインプログラムです。メインプログラムでは、FXMLLoaderを使用してFXMLリソースをロードする必要があります。他の部分はあまり変更されていません。
public class usefxml extends application {@override public void start(stage primerystage)throws extrues {parent root = fxmlloader.load(getClass()。getResource( "ui.fxml");シーンシーン=新しいシーン(root、300、275);プライマリステージ。 fxml "); primarystage.setscene(seence); primarystage.show();} public static void main(string [] args){launch(args);}}}実行中のプログラムのスクリーンショットは次のとおりです。
コンポーネントスタイルを変更する場合、JavafxはCSSインターフェイスを提供し、CSSファイルを使用してスタイルを直接変更できるようにします。まず、FXMLファイルの対応するスタイルシートへの参照を追加する必要があります。ファイル名の前の @は、CSSファイルとFXMLファイルが同じディレクトリにあることを意味します。
<GridPane> <Stylesheets> <url value = "@style.css"/> </styleSheets> <gridpane/>
スタイルシートは、Javafx固有のプレフィックスが必要であることを除いて、通常のスタイルシートに似ています。
#btnshowpassword {-fx-background-color:deeppink;}IDセレクターは上で使用されるため、それに応じて、ID属性もFXMLで必要です。
<button id = "btnshowpassword" text = "fospassword" onaction = "#fospasswordbutton"/>
カスタマイズ後のプログラムを図に示します。ボタンの背景色を単純に変更しただけです。実際、プログラムのバックグラウンドなどを含め、変更できる多くのスタイルがあります。興味のある学生は自分で試すことができます。
要約します
上記は、Javafxの予備的な理解に関するこの記事に関するすべてです。学生がJavaを使用してグラフィカルインターフェイスプログラムを作成したい場合は、Javafxの使用を検討できます。これは非常に良い選択です。それがすべての人に役立つことを願っています。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!