2013-11-20 4 views
0

이 문제를 어떻게 처분해야할지 모르겠다. 배경에 사각형이있는 셀 (격자 패널)의 가운데에 Text 객체를 설정하려고합니다. 이 문제를 해결하는 방법이나 올바른 단어를 찾는 방법을 모릅니다. 누군가가 나를 도울 수 있기를 바랍니다. 그것은 나에게 올바른 그림을 보여주고 사각형 셀을 채우고 텍스트 중심에javafx에서 하나의 그룹에 2 개의 객체를 설정하는 방법

void AbtButton(String Abteil) { 

    Rectangle r = new Rectangle(); 

    r.setWidth(80); 
    r.setHeight(40); 
    r.setArcWidth(20); 
    r.setArcHeight(20); 
    r.setFill(Color.AQUAMARINE); 
    r.setStroke(Color.BLACK); 
    r.setStrokeWidth(2);; 
    r.toBack(); 

    Text abt = new Text(Abteil); 
    abt.setId(Abteil); 
    abt.setFont(Font.font ("Verdana", FontWeight.BOLD, 20)); 
    abt.setTextAlignment(TextAlignment.CENTER); 
    abt.toFront(); 

    Button.getChildren().addAll(r,abt); 
    } 

내가

gridpane.add(r, 1, 1); 
gridpane.add(abt, 1, 1); 

을 할 경우 : :-) 내 코드 그게 전부

지금 위치.

Button.getChildren().addAll(r,abt); 

Textobject은 즉 rectantangle 위의 잘못된 위치에 있고 그 안,하지만 난이 필요로

. 나중에이 그룹화 된 객체를 많이 만들고 싶습니다.

toBack()와 toFront()는

편집 :-(너무 여기에 작동하지 않습니다. 여기

내가 문제의 사진이

http://s14.directupload.net/file/d/3449/blgrlw63_jpg.htm

의 Z- 텍스트의 순서는이 그리드 패널의 앞과 뒤의 사각형에 있어야합니다. 이 코드의 내용

abt.setLayoutX(27); 
abt.setLayoutY(27); 

텍스트 위치를 설정할 수는 있지만 좋은 옵션은 아닙니다.

답변

0

StackPane 클래스를 사용하여 문제를 해결할 수 있습니다. 다음 코드를 살펴보십시오.

GridPane g1 = new GridPane(); 

    StackPane sp = new StackPane(); 
    Rectangle r = new Rectangle(100, 100); 
    r.setFill(Color.AQUA); 
    Text t = new Text("StackOverFlow"); 

    sp.getChildren().addAll(r,t); 

    g1.add(sp, 0, 0); 

    Scene sc = new Scene(g1,200,200); 
    primaryStage.setScene(sc); 
    primaryStage.show(); 

스택 페인은 "마지막으로 처음 사용하는"방식으로 작동합니다. 따라서 마지막으로 추가 된 하위 요소가 가장 먼저 표시됩니다 (또는 더 좋게 : 요소는 창 위쪽에 있음). 다음 어린이는 첫 번째 자녀 뒤에 배치됩니다.

문제를 해결하려면 스택 창을 만든 다음 사각형을 넣은 다음 텍스트를 입력하십시오. 그런 다음, 스택 팬을 그리드 패널의 원하는 위치에 놓습니다.

+0

예는, 나 또한 stackpane를 사용하는 것으로 생각하지만 난 그것을 실현하지 수 있지만,이 예제와이 가능합니다! thx ;-) – Arktor

0

텍스트를 사각형 모양으로 설정하는 속성이 없으므로 Hbox 대신 Rectangle을 사용해야합니다.

gridFirst.setGridLinesVisible(true); 
    hboxFirst.setStyle("-fx-background-color:green"); 
    hboxFirst.setAlignment(Pos.CENTER); 
    hboxFirst.getChildren().add(new Text("hello")); 

enter image description here

enter image description here

+0

그래, 그 또한 좋은 해결책입니다, 나는 그것으로 실험 할 것입니다 :) – Arktor

관련 문제