개발 환경 설정
- JavaFX 개발 환경 설정(넷빈즈 8.2, 오라클 JDK 1.8, Scene Builder)
- Scene Builder에 라이브러리 추가 하는 방법(JFoeniX, FontAwesomeFX)
- 넷빈즈 프로젝트 외부 라이브러리(jar) 등록하는 방법
설명
웹 사이트를 다니다 보면, 아래와 같이 메뉴가 카테고리(분류)화 되여 있는곳을 가보면, 본인이 방문한 페이지 순서를 차례대로 표현된 것을 볼수 있습니다. 그것을 외국에서는 BreadCrumb Bar(BreadCrumb, BreadCrumbs)라고 부릅니다. 동일한 기능을 구현한 예제 입니다.
결과
프로젝트 다운로드
프로젝트 구조
소스 코드
JavaFXBreadCrumbBar.java
package com.ozxexe.breadcrumbbar;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TreeItem;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import org.controlsfx.control.BreadCrumbBar;
import org.controlsfx.control.BreadCrumbBar.BreadCrumbActionEvent;
public class JavaFXBreadCrumbBar extends Application {
public BreadCrumbBar<String> bcb;
Label msg;
@Override
public void start(Stage primaryStage) {
try {
VBox root = new VBox();
root.setPadding(new Insets(50));
Scene scene = new Scene(root, 400, 400);
//scene.getStylesheets().add(getClass().getResource("/com/ozxexe/breadcrumbbar/style.css").toExternalForm());
msg = new Label();
bcb = new BreadCrumbBar<>();
root.getChildren().add(bcb);
BorderPane.setMargin(bcb, new Insets(20));
TreeItem<String> model = BreadCrumbBar.buildTreeModel("Hello", "World", "This", "is", "cool");
bcb.setSelectedCrumb(model);
bcb.setOnCrumbAction(new EventHandler<BreadCrumbBar.BreadCrumbActionEvent<String>>() {
@Override
public void handle(BreadCrumbActionEvent<String> bea) {
msg.setText("You Cliked : " + bea.getSelectedCrumb() + "'!");
}
});
root.getChildren().add(msg);
primaryStage.setScene(scene);
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
style.css
bread-crumb-bar {
-fx-background-color: transparent;
}
.bread-crumb-bar .button {
-fx-padding: 8 10 8 40;
-fx-border-color: null;
-fx-border-insets: 0;
-fx-content-display: left;
-fx-background-position: left center;
-fx-background-repeat: no-repeat;
-fx-background-image: url("slash.png");
-fx-background-color: transparent;
-fx-border-color: transparent;
-fx-shape: null;
}
.bread-crumb-bar .first {
-fx-background-color: transparent ;
-fx-border-color: transparent;
-fx-font-size: 1.11em;
-fx-text-fill: #000;
-fx-background-image: null;
-fx-shape: null;
-fx-padding: 8 12 8 0;
}
.crumb {
-fx-text-fill: #000;
}
.crumb:hover,
.crumb:selected,
.crumb:focused
{
-fx-background-color: rgba(0,0,0,0.1);
-fx-border-color: null;
-fx-font-size: 1.11em;
-fx-text-fill: rgba(0,0,0,0.5);
}
참고사이트
'Java | JavaFX' 카테고리의 다른 글
JavaFX 메뉴(버튼) 클릭 마다, 겹쳐진 Pane 최상위로 올리기(정렬하기) 예제 (0) | 2019.12.30 |
---|---|
JavaFX 네비게이션 메뉴 클릭할때 마다 컨텐츠(*.fxml) 페이지 불러오기 예제 (0) | 2019.12.28 |
JavaFX 페이스북 디자인의 로그인(TimeLine를 활용한 화면 전환 애니메이션) (0) | 2019.12.27 |
JavaFX 윈도우(stage) 드래그 창 이동 및 최대화, 최소화, 닫기 기능 구현 예제 (0) | 2019.12.27 |
JavaFX AnimateFX 데모 예제 (0) | 2019.12.26 |