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로 화면 구성하기
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 |