2013-04-25 4 views
1

mainClass.java : 일반적으로자바 FX 장면 CSS 않아요 일

public class mainClass extends Application{ 
    Scene scene; 
    Group group; 
    @Override 
    public void start(Stage stg) throws Exception{ 
     stg.setTitle("Hi"); 
     stg.setWidth(600); stg.setHeight(250); 
     group = new Group(); 
     scene = new Scene(group, 600, 250); 
      scene.getStylesheets().add("mainClass.css"); 
     stg.setScene(scene); 
     stg.centerOnScreen(); 
     stg.show(); 
    } 

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

mainClass.css

.mainClass-scene{ 
    -fx-background-image: url("background.jpeg"); 
    -fx-background-repeat: stretch; 
    -fx-background-size: 600 250; 
    -fx-background-position: center center; 
    -fx-effect: dropshadow(three-pass-box, black, 30, 0.5, 0, 0); 
} 

응용 프로그램 작업 난 내 프레임을 보여하지만 난 방법을 작동하지 scene.Maybe의 CSS에서 본 배경 이미지를 기울인다 이 문제를 해결할 수 있습니까?

Sory for my bad english 고맙다.

답변

3

프로그램에 많은 문제가 있습니다.

  1. 스타일 클래스 mainClass-scene을 정의하지만 결코 사용하지 마십시오.
  2. Regions에서만 작동하는 CSS -fx-background-image 속성을 사용하지만 사용자는 지역이 없습니다.
  3. 그림자 효과를 적용하지만 그림자 이미지를 볼 때 배경 이미지 주위에 인세 트를 남기지 마십시오.
  4. 무대 크기를 장면 크기와 동일한 값으로 설정했지만 스테이지에 장식이 붙어 있으므로 제목 막대처럼 표시되므로 크기가 같을 수 없습니다.
  5. 일반적으로 css 파일을 클래스 리소스로 검색하는 것이 가장 좋습니다.

    poison

여기에 나를 위해 작동하고 위의 이미지를 생성하는 업데이트 버전입니다.

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 

public class MainClass extends Application{ 
    @Override public void start(Stage stage) throws Exception{ 
    stage.setTitle("Hi"); 

    StackPane layout = new StackPane(); 
    layout.getStylesheets().add("mainClass.css"); 
    layout.getStyleClass().add("main-class"); 

    Scene scene = new Scene(layout, 600, 250); 
    scene.getStylesheets().add(
     getClass().getResource("mainClass.css").toExternalForm() 
    ); 
    stage.setScene(scene); 
    stage.setResizable(false); 
    stage.centerOnScreen(); 
    stage.show(); 
    } 

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

관련 CSS :

/** 
* file: mainClass.css 
* Place in same directory as MainClass.java. 
* Have your build system copy this file to your build output directory. 
**/ 

.main-class { 
    -fx-background-image: url('http://icons.iconarchive.com/icons/mirella-gabriele/fantasy-mediaeval/256/Poison-blue-icon.png'); 
    -fx-background-repeat: stretch; 
    -fx-background-size: 570 220; 
    -fx-background-position: center center; 
    -fx-effect: dropshadow(three-pass-box, black, 30, 0.5, 0, 0); 
    -fx-background-insets: 30; 
} 
멋진 작품 큰 OOW
+0

하지만 난 새로운 문제가 :(내가 stackpane에 버튼을 추가 할 때, 내가 특정 좌표,를 사용하려면, 예를 들면 : setLayoutX (100) 없습니다. 작동 – kibar

+0

StackPane은 [레이아웃 관리자] (http://docs.oracle.com/javafx/2/layout/builtin_layouts.htm)입니다. 즉, 레이아웃 변수는 자식의 레이아웃 값을 관리한다는 의미이므로 명시 적으로 설정하지 않아도됩니다 값을 명시 적으로 설정하고 부모 구성 요소에 CSS를 사용하려면 [창] (http://docs.oracle.com/javafx/2/api/javafx/scene/layout/Pane.html)을 사용하십시오. StackPane 대신에. [SceneBuilder] (http://www.oracle.com/technetwork/java/javafx/tools/index.html) - 레이아웃을 훨씬 잘 이해하는 데 도움이 될 것입니다. 새로운 질문에 새로운 질문을하십시오. – jewelsea

+0

이해해 주셔서 감사합니다;) – kibar