2010-04-07 93 views
3

我在理解JavaFX中的佈局時遇到了一些問題。考慮下面的代碼。JavaFX佈局問題

 
Stage { 
    title: "ListView test" 
    scene: Scene { 
     width: 400 
     height: 400 
     content: [ 
      VBox { 
       content: [ 
        ListView { 
         height: 200 
         width: 200 
         items: ["item1", "item2"] 
        } 
       ] 
      } 
     ] 
    } 
} 

我期待的ListView表示200×200尺寸高達但不管怎麼試圖解決這個問題,ListView中的寬度和高度似乎固定。但下面的代碼可以按照我的意圖顯示ListView。

 
Stage { 
    title: "ListView test" 
    scene: Scene { 
     width: 400 
     height: 400 
     content: [ 
      ListView { 
       height: 200 
       width: 200 
       items: ["item1", "item2"] 
      } 
     ] 
    } 
} 

那麼,這裏有什麼問題?我不能在佈局中使用ListView?

+0

JavaFX中的佈局看起來很糟糕。我在HBox,VBox上看到了一些bug。我還將我的觀察提交給JavaFX Jira:RT-8411。希望它能在SDK 1.3中全部修復。 – Jhonghee 2010-04-08 16:45:52

回答

1

佈局節點被允許改變他們的孩子的位置和大小。只需設置一個孩子的寬度和高度,並期望佈局知道它應該尊重您的新值,那麼您需要的是以某種方式告訴佈局節點您希望尊重的值。查看LayoutInfo類和Node中的layoutInfo變量。

+1

謝謝。 LayoutInfo適合我。我會習慣這一點,但感覺很奇怪,即使寬度和高度是可寫的,你也必須這樣做。 – Jhonghee 2010-04-12 10:42:11

3

在JavaFX 1.2.x中,佈局中節點上的寬度和高度信息僅用於閱讀目的。如果要指定「優選的」尺寸使用

ListVIew { 
    layoutInfo: LayoutInfo {width: 200, height: 200} 
} 

這將在佈局作爲優選的尺寸和組件處理將根據該佈局是-ED。如果您有使用NetBeans JavaFX Composer Preview的經驗,您可能會注意到生成的代碼使用特殊類型的綁定方法,可以在佈局和其他容器(場景,組)中正確調整大小。

Ad Broken:Java FX中的佈局是通過Node構建的,並使用算法來定位和調整與組/場景中使用的幾何位置無關的組件。不幸的是在1.2中它帶來了一些對初學者來說誤導性的二元性。

+0

感謝您對佈局的很好的解釋。 – Jhonghee 2010-04-12 10:43:43