개발 환경 설정
- JavaFX 개발 환경 설정(넷빈즈 8.2, 오라클 JDK 1.8, Scene Builder)
- Scene Builder에 라이브러리 추가 하는 방법(JFoeniX, FontAwesomeFX)
- 넷빈즈 프로젝트 외부 라이브러리(jar) 등록하는 방법
왼쪽 사이드에 마우스 오버 시, 자동으로 슬라이드 되여 메뉴가 오픈되는 예제입니다. 굳이 메뉴가 아니더라도 응용하면 될듯합니다.
결과
프로젝트 다운로드
프로젝트 구조
소스 코드
JavaFXNavSlideMenu.java
package com.ozxexe.javafxnavslidemenu;
import javafx.animation.TranslateTransition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.util.Duration;
public class JavaFXNavSlideMenu extends Application {
@Override
public void start(Stage primaryStage) {
Pane root = new Pane();
root.setPrefSize(400, 300);
Text text = new Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit."
+ " Nullam vehicula justo et sem venenatis mattis non ut quam. "
+ "Aliquam erat volutpat. Etiam maximus magna quis tortor "
+ "pellentesque, in sollicitudin odio ullamcorper. Phasellus "
+ "a quam nisl. Fusce at urna dapibus, elementum quam "
+ "ultricies, posuere ipsum. Etiam varius orci a tortor "
+ "vestibulum fringilla. Sed consectetur nunc rhoncus diam "
+ "volutpat, vitae finibus eros cursus. Praesent quam mauris, "
+ "lacinia nec metus vitae, blandit faucibus tortor.");
text.setWrappingWidth(385);
text.setLayoutX(15);
text.setLayoutY(20);
VBox menu = new VBox();
menu.setId("menu");
menu.prefHeightProperty().bind(root.heightProperty());
menu.setPrefWidth(200);
menu.getChildren().addAll(new Button("Something"), new Button("Something else"), new Button("Something different"));
menu.getStylesheets().add(getClass().getResource("menustyle.css").toExternalForm());
menu.setTranslateX(-190);
TranslateTransition menuTranslation = new TranslateTransition(Duration.millis(500), menu);
menuTranslation.setFromX(-190);
menuTranslation.setToX(0);
menu.setOnMouseEntered(evt -> {
menuTranslation.setRate(1);
menuTranslation.play();
});
menu.setOnMouseExited(evt -> {
menuTranslation.setRate(-1);
menuTranslation.play();
});
root.getChildren().addAll(text, menu);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
menustyle.css
#menu {
-fx-background-color: #88F;
-fx-spacing: 5;
}
#menu .button {
-fx-pref-height: 30;
-fx-pref-width: 200;
-fx-background-color: #66F;
}
#menu .button:hover {
-fx-background-color: #F6F;
}
참고사이트
'Java | JavaFX' 카테고리의 다른 글
JavaFX AnimateFX 데모 예제 (0) | 2019.12.26 |
---|---|
JavaFX 제목표시줄(타이틀바) 없애는 방법 예제 (0) | 2019.12.26 |
JavaFX 탭을 활용한 메뉴 및 화면 전환 예제(JFXTabPane) (0) | 2019.12.26 |
JavaFX 웹 스타일 네이게이션 메뉴 예제(TranslateTransition) (0) | 2019.12.26 |
개발을 편의를 위해 설치해야 하는 유틸 프로그램 (0) | 2019.12.25 |