Javafx 소개
Java의 그래픽 인터페이스 라이브러리를 언급 할 때, 우리는 일반적으로 많은 책에 소개 된 두 가지를 포함하여 Swing 또는 오래된 AWT를 듣습니다. 많은 학교와 교육 수업은 또한이 두 기술을 가르칩니다. 그러나 실제로 두 기술 모두 오랫동안 구식이되었습니다. 스윙을 배우는 것은 어렵지 않지만 실제로 그것을 사용하여 인터페이스를 작성하는 것은 매우 어렵습니다. 인터페이스와 코드가 분리되지 않기 때문에 코드는 쓸 때 많은 수의 좌표로 채워야하며 수정하기가 매우 어렵습니다. 이와 관련하여 가장 좋은 점은 Microsoft의 WPF이며, 누가 사용할 수 있고 누가 그것을 아는 지 말할 수 있습니다.
물론 클라이언트 그래픽 프로그램을 작성하는 것은 Java의 약점이지만 Java는 이러한 노력을 포기하지 않았습니다. 오늘 소개 된 Javafx는 Java가 그래픽 인터페이스 프로그램을 작성하는 최신 기술입니다. 역사적 부담없이 Java로 그래픽 인터페이스 프로그램을 작성하려는 경우 Javafx를 사용하는 것이 좋습니다.
이것은 Oracle의 공식 웹 사이트의 Javafx에 대한 리소스 및 문서입니다.
이것은 공식 샘플 프로그램입니다. 우리는 Javafx 섹션을 참조하여 사용 방법을 배울 수 있습니다. 아래는 Fractal Javafx 프로그램 중 하나입니다. 위의 숫자를 클릭하면 다른 현미경 디스플레이가 입력 될 수 있습니다. 바이러스의 미세한 세계를 보는 것처럼 느껴집니다.
설치 방법
최신 버전의 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 warlences explortends anclate void void void (stage stage). btn = new button (); btn.settext ( "hello, world"); btn.setonaction (event-> {system.out.println ( "hello, world!");}); stackpane root = new stackpane (); root.getChildren (). World! "); Primartstage.setscene (scene); PrimaryStage.show ();} public static void main (String [] args) {런치 (args);}}실행 스크린 샷은 다음과 같습니다.
사용자 입력
이 프로그램은 사용자 로그인 상황을 처리하는 데 사용될 수 있습니다. 코드는 다음과 같습니다. 중요한 부분에 주석을 달았습니다. 코드의 마지막 부분은 setonaction 함수를 사용하여 버튼에 클릭 이벤트를 추가하고 버튼을 클릭하면 텍스트가 표시됩니다.
Public Class UserInput 확장 Application {@override public void start (Stage PrimaryStage)는 예외 {// 그리드 레이아웃 그리드 페인 그리드 = new GridPane (); grid.setalignment (pos.center); // 그리드 수직 간격 그리드 .sethgap (10); // grid horizontal spacing grid.setvgap (10); insets (25, 25, 25, 25)); // 새로운 장면 장면 장면 = 새로운 장면 (그리드, 300, 275); Primarystage.setscene (장면); // titletext 장면을 추가합니다. 1); // 태그 추가 및 텍스트 BoxesLabel username = 새 레이블 ( "사용자 이름 :"); grid.add (username, 0, 1); textfield usertextfield = new TextField (); grid.add (userTextField, 1, 1); // 태그 및 비밀번호 상자 pw = 새로운 레이블 ( "Password :"); pw, 0, 2); passwordfield (); grid.add (pwbox, 1, 2); // 제출 버튼 버튼 btn = 새 버튼 ( "로그인"); hbox hbbtn = new hbby (10); hbbtn.setalignment (pos.bottom_right); hbbtn.getchildren (); hbbtn, 1, 4); hbbtn, 1, 4); ActionTarget = new Text (); grid.add (ActionTarget, 1, 6); btn.setonaction (이벤트 -> {actionTarget.setfill (color.firebrick); ActionTarget.settext ( "login";})); PrimaryStage.settitle ( "javafx welcome"); problic void ();} {발사 (args);}}실행되는 프로그램의 스크린 샷은 다음과 같습니다.
이 프로그램은 실제로 어렵지 않으며 그리드 레이아웃을 사용한 다음 각 요소를 그리드에 추가합니다. 그리드 레이아웃의 속성 의미는 공식 그림을 참조하십시오.
FXML로 사용자 인터페이스 설계
최신 그래픽 인터페이스 프레임 워크는 인터페이스 및 코드를 분리하는 지원을 지원하며보다 일반적으로 사용되는 설명 언어는 QT의 QML 및 WPF의 XAML과 같은 XML입니다. 물론 Javafx는 FXML이라는 비슷한 언어를 가지고 있습니다. FXML을 자세히 알아야한다면 Oracle의 공식 웹 사이트에서 FXML 소개 기사를 참조하십시오.
FXML에서 위의 작은 예를 다시 작성하고 각 부분에 주석을 달아 드리겠습니다. 다른 유사한 설명 언어를 배웠다면 실제로 비슷하다는 것을 알게 될 것입니다. 주목해야 할 유일한 것은 컨트롤러를 지정하는 레이아웃의 FX : 컨트롤러 속성이며 컨트롤러의 기능은 인터페이스의 해당 코드를 작성하는 것입니다.
<? xml version = "1.0"encoding = "utf-8"?> <!-가져 오기 클래스-> <? import javafx.geometry.insets?> <? import javafx.scene.control.*?> <? import javafx.scene.layout.*? <? import javafx.scene.text.font? javafx.scene.text.text?> <!-설정 레이아웃-> <gridpane xmlns = "http://javafx.com/javafx"xmlns : fx = "http://javafx.com/fxml : controller ="yitian.javafxsamples.controller " prefwidth = "600.0"alignment = "center"hgap = "10"vgap = "10"> <padding> <padding> <insets top = "25"right = "25"attance = "10"왼쪽 = "25"/> </padding> <!-elocc gridpane.columnspan = "2"> <font> <font name = "consolas"size = "20"/> </font> </text> <label text = "username :"gridpane.columnindex = "0"gridpane.rowindex = "1"/> <textfield gridpane.columnindex = "gridpane." text = "password :"gridpane.columnindex = "0"gridpane.rowindex = "2"/> <passwordfield fx : id = "passwordfield"gridpane.columnindex = "1"gridpane.rowindex = "2"/> <!-<hbox spacing = "10"Alignment = "gridpane". gridpane.rowindex = "4"> <button text = "show passwor"onaction = "#showpasswordbutton"/> </hbox> <text fx : id = "hinttext"gridpane.columnindex = "0"gridpane.columnspan = "2"gridpane.halignment = "gridpane>
아래는 표준 Java 클래스 인이 FXML 파일에 해당하는 컨트롤러입니다. FXML에서 FX : ID 속성에 지정된 ID는 컨트롤러의 클래스 필드로 선언 될 수 있으며,이를 통해 인터페이스 구성 요소와 상호 작용할 수 있습니다. 마찬가지로 마찬가지로 OnAction에서 선언 한 이벤트 핸들러는 컨트롤러의 메소드입니다. @FXML 주석을 사용하여 이러한 필드와 메소드에는 주석이 달라야합니다.
import javafx.event.actionevent; import javafx.fxml.fxml; import javafx.scene.control.passwordfield; import javafx.scene.text.text; public class 컨트롤러 {@fxml private accepted hinttext; @fxml private passwordfield; {hinttext.settext ( "비밀번호 표시 :" + passwordfield.getText ());}}마지막으로 수정해야 할 것은 주요 프로그램입니다. 메인 프로그램에서는 FXMLLOADER를 사용하여 FXML 리소스를로드해야하며 다른 부분은 크게 변경되지 않았습니다.
public class usefxml 확장 application {@override public void start (stage public void start)는 예외 {parent root = fxmlloader.load (getclass (). getResource ( "ui.fxml"); 새 장면 (루트, 300, 275); 1 차 단계.settitle ( "사용 fxml "); Primartstage.setscene (scene); PrimaryStage.show ();} public static void main (String [] args) {unker (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 = "showpassword"onaction = "#showpasswordbutton"/>
사용자 정의 후 프로그램이 그림에 나와 있습니다. 버튼의 배경색 만 단순히 수정했습니다. 실제로, 프로그램 배경 등을 포함하여 변경할 수있는 많은 스타일이 있습니다. 관심있는 학생들은 스스로 시도 할 수 있습니다.
요약
위의 것은 Javafx에 대한 예비 이해에 관한이 기사에 관한 모든 것입니다. 모든 학생이 Java를 사용하여 그래픽 인터페이스 프로그램을 작성하려면 Javafx 사용을 고려할 수 있습니다. 이는 매우 좋은 선택입니다. 모든 사람에게 도움이되기를 바랍니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!