본문 바로가기

오늘의 공부 & 기록

3월 22일 javaFx

1. Lambda

package lambdas;

interface ILambdaEx01 {
	void lambda();
}

// 구현체 따로 만들어서 구현하기
class LambdaImplEx01 implements ILambdaEx01 {

	@Override
	public void lambda() {
		System.out.println("메서드 호출");		
	}
	
}
public class LambdaEx01 {

	public static void main(String[] args) {
		LambdaImplEx01 ex01 = new LambdaImplEx01();
		ex01.lambda();

	}

}

 

package lambdas;

interface ILambdaEx02 {
	void lambda();
}

public class LambdaEx02 {
	public static void main(String[] args) {
		ILambdaEx02 ex02 = new ILambdaEx02() {
			// 오버라이드해서 구현하기
			@Override
			public void lambda() {
				System.out.println("메서드 호출");				
			}			
		};
		
		ex02.lambda();
	}
}

 

package lambdas;

interface ILambdaEx03{
	void lambda();
}

// 람다식으로 구현하기
public class LambdaEx03 {
	public static void main(String[] args) {
		ILambdaEx03 ex03 = () -> {
			System.out.println("메서드 호출");
		};
		ex03.lambda();
	}

}

 

2. event

package events;


import javafx.application.Application;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.AnchorPane;
import javafx.scene.text.Font;
import javafx.stage.Stage;

public class EventsEx01 extends Application{

	public static void main(String[] args) {
		launch(args);
	}
	
	@Override
	public void start(Stage primaryStage) throws Exception {
		Label label = new Label("클릭");
		label.setFont(new Font(24));
		label.setLayoutX(120);
		label.setLayoutY(80);
		
		// 오버라이드로 표현
//		EventHandler eh = new EventHandler() {
//
//			@Override
//			public void handle(Event event) {
//				System.out.println("레이블 위에 마우스 포인터가 있다.");
//			}
//			
//		};
		
		// 람다식으로 표현
		EventHandler<Event> eh = (e) -> {
			System.out.println("레이블 위에 마우스 포인터가 있다.");
		};
		
		
		label.setOnMouseClicked(eh); // 클릭
//		label.setOnMouseEntered(eh); // 올리기
		
		AnchorPane anchor = new AnchorPane();
		anchor.getChildren().add(label);
		
		primaryStage.setTitle("EventEx1");
		primaryStage.setScene(new Scene(anchor, 300, 200));
		primaryStage.show();
		
	}

}

 

 

3. Scene Builder

https://gluonhq.com/products/scene-builder/

 

Scene Builder - Gluon

Drag & Drop,Rapid Application Development. Download Now   Integrated Scene Builder works with the JavaFX ecosystem – official controls, community projects, and Gluon offerings including Gluon Mobile, Gluon Desktop, and Gluon CloudLink.   Simple Drag

gluonhq.com

 

 

더보기

 

 

(현재 설치한 이클립스 버전에서 지원 안함)

 

 

Scene Builder로 화면 구성하기

 

 

Ex1.class

package ex1;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Ex1 extends Application{

	public static void main(String[] args) {
		launch(args);
	}

	@Override
	public void start(Stage primaryStage) throws Exception {
		System.out.println("현재 클래스: " + getClass());
		System.out.println("어떤 대상의 위치: " + getClass().getResource("ex1.fxml"));
		
		FXMLLoader loader = new FXMLLoader(getClass().getResource("ex1.fxml"));
		Parent form = loader.load();
		
		primaryStage.setScene(new Scene(form));
		primaryStage.setTitle("ex1");
		primaryStage.show();
		
	}

}

 

 

ex1.fxml

- Scene Builder로 구성한 화면이 xml  코드로 만들어짐

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.PasswordField?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?>


<HBox alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="122.0" prefWidth="381.0" spacing="10.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <VBox alignment="CENTER_LEFT" prefHeight="102.0" prefWidth="173.0" spacing="10.0">
         <children>
            <TextField prefHeight="35.0" prefWidth="120.0" />
            <PasswordField maxWidth="190.0" prefHeight="35.0" prefWidth="120.0" />
         </children>
      </VBox>
      <VBox alignment="CENTER_LEFT" prefHeight="91.0" prefWidth="160.0">
         <children>
            <Button mnemonicParsing="false" prefHeight="82.0" prefWidth="97.0" style="-fx-background-color: #58ACFA;" text="로그인" textAlignment="CENTER" textFill="WHITE">
               <font>
                  <Font name="Dotum" size="12.0" />
               </font>
            </Button>
         </children>
      </VBox>
   </children>
</HBox>

 

 

 

 

 

'오늘의 공부 & 기록' 카테고리의 다른 글

3월 24일 javaFx  (0) 2023.03.24
3월 23일 Scene Builder  (0) 2023.03.23
3월 21일 javafx  (0) 2023.03.21
3월 20일 javajx  (0) 2023.03.20
3월 17일 javaFX  (0) 2023.03.17