2015-02-07 44 views
0

由於某種原因,JavaFX的ToolBar僅提出了兩種用於項目對齊的選項:LEFT_TO_RIGHTRIGHT_TO_LEFT如何指定您希望工具欄中的元素居中?

而且有趣的是,如果這是RIGHT_TO_LEFT你有相反的順序使他們出現自然給指定商品......

但是我沒有看到任何選項在位元件中心。你如何實現這一目標?或者我必須使用別的東西而不是工具欄?


編輯:這裏是當前的代碼......不幸的是,這並不工作:(

FXML:

<BorderPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" 
    fx:controller="com.github.fge.grappa.debugger.csvtrace.tabs.linechart.LineChartTabDisplay"> 
    <top> 
     <ToolBar fx:id="toolbar"> 
      <HBox fx:id="hbox" alignment="CENTER"> 
       <Region fx:id="leftSpacer"/> 
       <Button text="Refresh"/> 
       <ProgressBar visible="false"/> 
       <Label text="Layout testing"/> 
       <Region fx:id="rightSpacer"/> 
      </HBox> 
     </ToolBar> 
    </top> 
</BorderPane> 

類:

public class LineChartTabDisplay 
    extends JavafxDisplay<LineChartTabPresenter> 
{ 

    public Region leftSpacer; 
    public Region rightSpacer; 
    public ToolBar toolbar; 
    public HBox hbox; 

    @Override 
    public void init() 
    { 
     HBox.setHgrow(leftSpacer, Priority.SOMETIMES); 
     leftSpacer.setMinWidth(Region.USE_PREF_SIZE); 
     HBox.setHgrow(rightSpacer, Priority.SOMETIMES); 
     rightSpacer.setMinWidth(Region.USE_PREF_SIZE); 
    } 
} 

但這是它給出的:

enter image description here

回答

0

那麼有這個小黑客製作一個動態間隔:

final Region spacer = new Region(); 
HBox.setHgrow(spacer, Priority.SOMETIMES); 
spacer.setMinWidth(Region.USE_PREF_SIZE); 

如果你把一個作爲第一項,在ToolBar您的項目插圖中應該是居中的一個又一個的最後一個項目。

+0

所以,我認爲我的項目被封閉在一個'HBox'中......我這樣做了,但不幸的是,HBox似乎不想將其寬度擴展到「ToolBar」的寬度s :(如果我嘗試將'.prefWidthProperty()'綁定到工具欄的'widthProperty()'它是完全搞砸了......我不知道爲什麼應該是簡單的事情是如此複雜:(請參閱編輯問題 – fge 2015-02-07 16:01:01

+0

在我的工具欄上這個間隔區域'工作得很好..那麼我運氣不好。你是否設置了「minWidth」? – eckig 2015-02-07 16:12:49

+0

最小寬度? HBox?不,我沒有。我的代碼實際上就像您在問題中看到的那樣... – fge 2015-02-07 16:16:11

0

發現。

實際上,代碼非常「簡單」。樣的,因爲這真的應該是在ToolBar對於初學者,但在這裏不用...

的FXML如下內容:

<BorderPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" 
    fx:controller="com.github.fge.grappa.debugger.csvtrace.tabs.linechart.LineChartTabDisplay"> 
    <top> 
     <ToolBar fx:id="toolbar"> 
      <HBox fx:id="hbox" alignment="CENTER" spacing="5.0"> 
       <Button text="Refresh"/> 
       <Label text="Layout testing"/> 
      </HBox> 
     </ToolBar> 
    </top> 
</BorderPane> 

和代碼很簡單:

public class LineChartTabDisplay 
    extends JavafxDisplay<LineChartTabPresenter> 
{ 
    @FXML 
    protected ToolBar toolbar; 

    @FXML 
    protected HBox hbox; 

    @Override 
    public void init() 
    { 
     hbox.minWidthProperty().bind(toolbar.widthProperty()); 
    } 
}