2016-10-03 14 views
0

맨 위에 맨 제목, 중간에 목록, 하단에 세 개의 버튼이있는 간단한 디스플레이가 있습니다. 맨 위의 제목과 아래쪽의 버튼을 수평으로 가운데에 맞 춥니 다. 여기 GridPane (JavaFX)의 버튼 및 텍스트 가운데 맞추기

내가 사용하려고했던 코드 :

<?xml version="1.0" encoding="UTF-8"?> 

<?import javafx.scene.control.Button?> 
<?import javafx.scene.control.Label?> 
<?import javafx.scene.control.ListView?> 
<?import javafx.scene.layout.GridPane?> 

<GridPane 
    xmlns="http://javafx.com/javafx/8.0.40" 
    xmlns:fx="http://javafx.com/fxml/1" 
    fx:controller="controllers.SongLibraryController" 
> 
    <Label 
     text="Todo List" 
     GridPane.columnSpan="3" 
     GridPane.rowIndex="0" 
     GridPane.halignment="CENTER" 
    /> 
    <ListView 
     prefWidth="300" 
     prefHeight="400" 
     fx:id="listView" 
     GridPane.columnSpan="3" 
     GridPane.rowIndex="1" 
    /> 
    <Button 
     fx:id="editItem" 
     GridPane.halignment="CENTER" 
     GridPane.columnIndex="0" 
     GridPane.rowIndex="2" 
     text="Edit Item" 
    /> 
    <Button 
     fx:id="addItem" 
     GridPane.halignment="CENTER" 
     GridPane.columnIndex="1" 
     GridPane.rowIndex="2" 
     text="Add Item" 
    /> 
    <Button 
     fx:id="deleteItem" 
     GridPane.halignment="CENTER" 
     GridPane.columnIndex="2" 
     GridPane.rowIndex="2" 
     text="Delete Item" 
    /> 
</GridPane> 

을 그리고 여기에 현재 출력 :

enter image description here

내가 alignment="CENTER"를 사용하는 것과 같이 다양한 일을 시도했습니다 내 GridPane,하지만 아무것도 작동하는 것 같다. 어떤 도움을 주시면 감사하겠습니다!

답변

1

GridPane에 대한 맞춤을 alignment="center"으로 설정해야하며 모든 요소가 가운데에 정렬됩니다.

업데이트 이렇게 가운데에 단추를 정렬 할 수 있습니다.

<HBox GridPane.rowIndex="2" GridPane.columnSpan="3" alignment="CENTER" spacing="25"> 
    <Button text="b1"/> 
    <Button text="b2"/> 
    <Button text="b3"/> 
</HBox> 

이 업데이트 후에도 각 노드에서 columnSpan 특성을 삭제할 수 있습니다.

+0

실제로 나는'alignment = "CENTER"'를 이미 시도해 보았고, 이것을 보여주기 위해 나의 코드를 업데이트했다. 생성 된 출력에는 영향을주지 않았습니다. – saadq

+0

@meh_programmer, 내 대답을 검토 – GVArt

+0

아, 알 겠어. 정말 고마워! – saadq

1

GridPane 클래스에서 요소를 프로그래밍 방식으로 정렬하려면 정적 메서드를 호출해야합니다.

가로 맞춤을 설정하려면 GridPane.setHalignment(Node n, HPos p)으로 전화하십시오. 수직 정렬을 설정하려면 GridPane.setValignment(Node n, VPos p)으로 전화하십시오.

오라클 자신의 레이아웃 가이드 here을 읽을 수 있습니다. 원형 차트가 나타날 때까지 아래로 스크롤하면 격자 패널의 레이아웃을 관리하는 방법의 예가 표시됩니다.

FXML로 관리하려면 특정 속성을 설정해야합니다. 내 머리 꼭대기를 기억할 수는 없지만 GridPane 노드에 alignment="center"이라고 생각합니다.

+0

'GridPane.halignment = "CENTER"를'Label'을 중심으로 설정 한 것 같습니다. 고마워요! 그러나 버튼에 대해서는 작동하지 않는 것 같습니다. 내 스크린 샷을 업데이트했습니다. 3 개의 버튼이 수평으로 가운데에 오도록 내가 할 수있는 것이 있습니까? 또한 부수적으로,'GridPane'에서'alignment = "CENTER"설정이 아무런 효과가 없다. 어쨌든, 그것은 조금 도움이 된 이후로 당신의 대답을 upvoting! – saadq

+0

GVArt가 제안한 것처럼 전체 GridPane을 중앙에 정렬 할 수 있다고 생각합니다. 즉, alignment = "CENTER" "을 추가하면됩니다. – Gikkman