JavaFX 2.0布局窗格– BorderPane

BorderPane非常適合開發更復雜的布局。 通常, BorderPane提供五個不同的區域:頂部,右側,底部,左側和中央。 您可以通過調用setTop/setBottom/set…方法將Node設置到每個區域。 這種方法使開發“類似于網站”的應用程序窗口變得非常容易,您可以在其中的菜單欄或工具欄在頂部,左側導航,在底部有某種頁腳,在中心區域顯示您的主要內容右側的其他信息。

重要的是要知道,每個區域的大小都不同:

  • 頂部和底部區域將調整為其子級的首選高度,并占用其寬度的所有可用空間。
  • 左側和右側區域將調整其子級的首選寬度,并占用其高度的所有可用空間。
  • 中心區域占用了其高度和寬度的所有可用空間。

下圖演示了調整應用程序窗口大小時BorderPane的行為:

資料來源:自己的插圖

BorderPane –示例

/*** Created on: 29.03.2012* @author Sebastian Damm*/
public class BorderPaneExample extends Application
{private BorderPane root;@Overridepublic void start(Stage primaryStage) throws Exception{root = new BorderPane();        root.setTop(getMenu());root.setRight(getRightHBox());root.setBottom(getFooter());root.setLeft(getLeftHBox());root.setCenter(getCenterPane());Scene scene = new Scene(root, 900, 500);        primaryStage.setTitle("BorderPane Example");primaryStage.setScene(scene);primaryStage.show();    }private MenuBar getMenu(){MenuBar menuBar = new MenuBar();Menu menuFile = new Menu("File");                Menu menuEdit = new Menu("Edit");Menu menuHelp = new Menu("Help");        menuBar.getMenus().addAll(menuFile, menuEdit, menuHelp);return menuBar;}private HBox getRightHBox(){HBox hbox = new HBox();VBox vbox = new VBox(50);vbox.setPadding(new Insets(0, 20, 0, 20));vbox.setAlignment(Pos.CENTER);vbox.getChildren().addAll(new Text("Additional Info 1"), new Text("Additional Info 2"), new Text("Additional Info 3"));    hbox.getChildren().addAll(new Separator(Orientation.VERTICAL), vbox);     return hbox;}private HBox getLeftHBox(){HBox hbox = new HBox();VBox vbox = new VBox(10);vbox.setPadding(new Insets(10));Text text = new Text("Navigation");text.setFont(Font.font("Helvetica", FontWeight.BOLD, 20));VBox vboxText = new VBox(10);for (int i = 1; i >= 10; i++){vboxText.getChildren().add(new Text("Category " + i));}        vboxText.setTranslateX(10);vbox.getChildren().addAll(text, vboxText);        hbox.getChildren().addAll(vbox, new Separator(Orientation.VERTICAL));return hbox;}private VBox getFooter(){VBox vbox = new VBox();HBox hbox = new HBox(20);hbox.setPadding(new Insets(5));hbox.setAlignment(Pos.CENTER);hbox.getChildren().addAll(new Text("Footer Item 1"), new Text("Footer Item 2"), new Text("Footer Item 3"));        vbox.getChildren().addAll(new Separator(), hbox);return vbox;}private StackPane getCenterPane(){StackPane stackPane = new StackPane();stackPane.setAlignment(Pos.CENTER);Rectangle rec = new Rectangle(200, 200);rec.setFill(Color.DODGERBLUE);rec.widthProperty().bind(stackPane.widthProperty().subtract(50));rec.heightProperty().bind(stackPane.heightProperty().subtract(50));stackPane.getChildren().addAll(rec);return stackPane;}public static void main(String[] args){Application.launch(args);}
}

這個小應用程序展示了如何使用BorderPane 。 在start方法中,我們僅使用BorderPane類的各種set…方法,以便使用Node填充每個區域。

頂部區域充滿了MenuBar 。 在這里,我簡單地創建一個帶有三個不同MenusMenuBar 。 在我的下一篇文章中,我將深入介紹JavaFX中菜單的創建。

除了菜單外,代碼的一個方面可能對您來說是新的。 請看一下第100行:

BorderPane的中心區域填充了一個擁有RectangleStackPane 。 由于Rectangle不會直接使用其父對象(如所有Shape對象)直接調整大小,因此,當我們想調整Rectangle大小時,我們必須采用其他方法。 這就是為什么我將Rectangle的寬度和高度綁定StackPane的寬度和高度(減去50個像素)的原因。 更改StackPanes的大小時, Rectangle將相應地自動調整大小。

這是有關應用程序外觀和大小調整的三張圖片:

如您所見, BorderPane的不同區域BorderPane根據我在本文頂部說明的規則進行相應調整。

參考: JavaFX 2.0布局窗格–來自我們JCG合作伙伴 Sebastian Damm的BorderPane在Java博客上的Just my 2 cents 。


翻譯自: https://www.javacodegeeks.com/2012/07/javafx-20-layout-panes-borderpane.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371901.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371901.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371901.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

頁面排版簡單樣式

頁面排版簡單樣式demo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml" xml:lang"zh-cn"> &l…

JavaWeb基礎(jsp初識)

jsp, java server page jsp頁面是在服務器上運行的一個頁面 動態網頁 與后臺有數據交互的頁面 與其他語言的區別: jsp 使用java語言進行開發, 安全性高, 適合大型項目, 企業級的文本應用分布式項目, 服務器集群, hadoop asp.net 使用c#, .Net平臺, 簡單易用, 因為不開源, 所以安…

nao機器人拆解_一些機器人硬件網站

以前收集過一些網站&#xff0c;偏機器人機械結構、硬件、參數(也有模擬或算法)。在 https://www.zhihu.com/question/19826366 也夾雜著一些網址&#xff0c;但是有些網址沒有深入的內容&#xff0c;排版也不好&#xff0c;所以 在這里編輯成一個列表&#xff0c;方便歸檔。歡…

心電圖是模擬計算機嗎,心電圖儀

心電圖儀是由威廉愛因托芬(W. Einthoven,1860-1927)發明的。 什么是心電圖儀(機)M311986 心電圖儀能將心臟活動時心肌激動產生的生物電信號(心電信號)自動記錄下來&#xff0c;為臨床診斷和科研常用的醫療電子儀器。國內一般按照記錄器輸出道數劃分為&#xff1a;單道、三道、六…

從Java 8啟動項目拼圖?

在馬克雷因霍爾德 &#xff08; Mark Reinhold &#xff09;在他的《 項目拼圖&#xff1a;火車晚點 》一文中提出“將項目拼圖推遲到Java 9的下一個發行版中”。 他解釋了這樣做的原因&#xff1a;“仍然存在一些重大的技術挑戰”&#xff0c;并且“沒有足夠的時間來進行廣泛的…

ChannelOption用到的socket的標準參數

ChannelOption.SO_BACKLOG, 1024 BACKLOG用于構造服務端套接字ServerSocket對象&#xff0c;標識當服務器請求處理線程全滿時&#xff0c;用于臨時存放已完成三次握手的請求的隊列的最大長度。如果未設置或所設置的值小于1&#xff0c;Java將使用默認值50。 ChannelOption.SO_K…

cbrt c語音_isgraph - [ C語言中文開發手冊 ] - 在線原生手冊 - php中文網

在頭文件中定義int isgraph(int ch);檢查給定字符是否具有圖形表示形式&#xff0c;即它是數字(0123456789)&#xff0c;大寫字母(ABCDEFGHIJKLMNOPQRSTUVWXYZ)&#xff0c;小寫字母(abcdefghijklmnopqrstuvwxyz)或標點符號(!"#$%&()*,-./:;<>?[\]^_{|}~)或特定…

計算機的內存和cpu,內存與CPU二者之間的關系_Intel服務器CPU_服務器產業-中關村在線...

“在一起&#xff0c;在一起”&#xff0c;相信這也是很多人希望的結果&#xff0c;無論是從技術角度&#xff0c;還是從空間角度&#xff0c;似乎二者都有著很多理由被放在一起完成任務。但是&#xff0c;二者為何一直沒有“在一起”呢&#xff1f;也許這句歌詞可以回答原因&a…

JUnit,Logback,帶有Maven 3的Maven

在本系列中&#xff0c;我們已經學習了建立基本的Spring MVC應用程序并學習了如何在Spring MVC中處理表單 。 現在該討論更多涉及的主題了。 但是&#xff0c;在我們涉足更深的領域之前&#xff0c;讓我們先進行一些基礎設置。 單元測試 我不是TDD傳播者。 我在那里說了。 我從…

Gradle中的buildScript,gradle wrapper,dependencies等一些基礎知識

就想收藏一篇好文&#xff0c;哈哈&#xff0c;無他 Gradle中的buildScript代碼塊 - 黃博文 然后記錄一些gradle的基礎知識&#xff1a; 1.gradle wrapper就是對gradle的封裝&#xff0c;可以理解為項目內部內置了gradle 2.dependencies的參數 上官方參數表https://docs.gradle…

phonegap工程中修改app的名字

針對phonegap比較高的版本&#xff0c;我的是6.4.0。 在phonegap工程中&#xff0c;當添加了iOS和android平臺或多個平臺后&#xff0c;工程進行了開發&#xff0c;然后覺得app的名字想修改一下&#xff08;比如在手機上顯示的app名字&#xff0c;或者通過ipa導入安裝或者apk包…

ac ap方案 華為_華為無線_AC+AP小型無線網絡配置實驗_v1

【如果在實驗中有什么疑問&#xff0c;歡迎關注微信公眾號“IT后院”給我留言&#xff0c;我會抽空回答你的問題】華為無線-ACAP小型無線網絡配置實驗_v1網絡結構圖&#xff1a;步驟一&#xff1a;配置網絡連通性SW:interface Vlanif100ip address 192.168.0.1 255.255.255.0in…

css類選擇器或邏輯,深入理解CSS中選擇器的邏輯處理

在過去的很長一段時間中&#xff0c;我們都說 CSS 是不帶有任何邏輯的&#xff0c;意思是在 CSS 中沒有控制流&#xff0c;也沒有某種類似于其他編程語言的方式來組織 CSS。CSS 天生缺乏邏輯性的問題導致了預處理器的出現。然而業界卻對 CSS 預處理器褒貶不一&#xff0c;支持預…

JSF基于事件的交流:新派方法

在上一篇文章中 &#xff0c;我們學習了基于Observer / Event Listener和Mediator模式的基于事件的通信。 由于它們的缺點&#xff0c;我想展示基于事件的通信的更有效方法。 我們將從Google Guava EventBus開始&#xff0c;以CDI &#xff08;Java EE平臺的上下文和依賴注入&a…

菜鳥之路-淺談設計模式之單例設計模式

單例設計模式 定義&#xff1a;確保一個類僅僅有一個實例&#xff0c;并且自行實例化并向整個系統提供這個實例。單例模式是一種經常使用的軟件設計模式。在它的核心結構中僅僅包括一個被稱為單例的特殊類。通過單例模式能夠保證系統中一個類僅僅有一個實例并且該實例易于外界訪…

python 32bit數據結構_python實現bitmap數據結構詳解

bitmap是很常見的算法設計&#xff0c;例如用以Bloom Filter中&#xff1b;用以無反復整數金額的排列這些。bitmap一般根據數組來完成&#xff0c;數組中每一個原素能夠當做是一系列二進制數&#xff0c;全部元素組成更高的二進制結合。針對Python而言&#xff0c;整數金額種類…

MVC如何使用開源分頁插件shenniu.pager.js

最近比較忙&#xff0c;前期忙公司手機端接口項目&#xff0c;各種開發調試發布現在幾乎上線無問題了&#xff1b;雖然公司項目忙不過在期間抽空做了兩件個人覺得有意義的事情&#xff0c;一者使用aspnetcore開發了個人線上項目&#xff08;要說線上其實只能ip訪問&#xff0c;…

四. 基于環視Camera的BEV感知算法-PETR

目錄 前言0. 簡述1. 算法動機&開創性思路2. 主體結構3. 損失函數4. 性能對比5. PETRv2總結下載鏈接參考 前言 自動駕駛之心推出的《國內首個BVE感知全棧系列學習教程》&#xff0c;鏈接。記錄下個人學習筆記&#xff0c;僅供自己參考 本次課程我們來學習下課程第四章——基…

Java EE 6 VS Spring 3:Java EE已經殺死了Spring? 沒門!

介紹 幾天前&#xff0c;我在聽Java Spotlight Podcast的插曲85 。 在這次演講中&#xff0c; Bert Ertman和Paul Bakker討論了從Spring遷移到Java EE。 基本上&#xff0c;在他們的介紹中&#xff0c;他們說&#xff0c;如今&#xff0c;選擇Spring而不是Java EE是沒有意義的。…

usb檢測串口是哪個角_怎樣測試串口和串口線是否正常

一步&#xff1a;把串口線或者USB轉串口線插到計算機上。二步&#xff1a;打開串口調試助手接著選擇串口&#xff0c;串口線和 USB 轉串口的端口號查看路徑&#xff1a;電腦上--右鍵--屬性--硬件--設備管理器-端口(COM 和LPT),點開端口前面的號查看即可。注釋&#xff1a;1、US…