我正在JavaFx 2.0中構建應用程序,並且希望在部署應用程序時讓它顯示在瀏覽器窗口的中心。我在谷歌和雅虎尋找這個話題,並沒有發現任何東西。任何幫助是極大的讚賞。如何將JavaFX 2.0應用程序居中在瀏覽器窗口上
0
A
回答
1
您可以使用HBox中的組合和垂直框面板在FXML。 Hier是我的測試代碼:
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane fx:id="panel1" xmlns:fx="http://javafx.com/fxml" fx:controller="app.MainController">
<HBox alignment="CENTER" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<VBox alignment="CENTER">
<Pane fx:id="panel2"></Pane> <!-- YOUR CENTERED CONTENT HERE! -->
</VBox>
</HBox>
</AnchorPane>
'panel1'將在瀏覽器區域拉伸。所以HBox和VBox也會。因爲他們對他們的孩子有'中心'屬性,所以'panel2'將居中。
2
查看source code的JavaFX Ensemble example。無論窗口大小如何,Ensemble應用程序都配置爲運行以填充瀏覽器窗口。它的完成方式是通過在啓動應用程序的JavaScript中進行配置,以及通過嵌入應用程序的div的css樣式。
以下是html相關部分的摘錄。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JavaFX 2.0 - Ensemble</title>
<SCRIPT src="http://java.com/js/dtjava.js"></SCRIPT>
<script>
function javafxEmbed_ensemble() {
dtjava.embed(
{
id : 'ensemble',
url : 'Ensemble.jnlp',
placeholder : 'javafx-app-placeholder',
width : '100%',
height : '100%',
jnlp_content : '...'
},
{
javafx : '2.0+'
},
{}
);
}
dtjava.addOnloadCallback(javafxEmbed_ensemble);
</script>
<style>
html, body, #javafx-app-placeholder, #ensemble-app {
margin: 0;
overflow: hidden;
padding: 0;
width: 100%;
height: 100%;
}
</style>
</head>
<body><div id='javafx-app-placeholder'></div></body>
</html>
如果需要超過100%的覆蓋範圍以外的東西,你可以將100個%的標籤,比如75%,並調整CSS樣式來得到你想要的利潤率頁面居中。
當前的Java打包工具(例如javafxpackager實用工具)不允許指定percentange的寬度。我在javafx jira中爲此創建了一項功能請求 - 您可以在那裏創建一個帳戶來查看請求。如果您將這些工具用於generate your deployment html,那麼您可能必須手工修改部署html或通過後處理ant腳本修改,這可以在Ensemble示例應用程序的build.xml中看到。
1
使用此FXML
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="500.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml">
<children>
<HBox id="HBox" alignment="CENTER" spacing="5.0" AnchorPane.bottomAnchor="213.0" AnchorPane.leftAnchor="168.0" AnchorPane.rightAnchor="168.0" AnchorPane.topAnchor="214.0">
<children>
<GridPane id="gridPane1" alignment="CENTER" hgap="2.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" vgap="2.0">
<children>
<Label id="label1" alignment="CENTER_RIGHT" contentDisplay="RIGHT" text="Username" GridPane.columnIndex="0" GridPane.rowIndex="0" />
<Label id="label2" alignment="CENTER_RIGHT" text="Password" GridPane.columnIndex="0" GridPane.rowIndex="1" />
<TextField id="textField1" fx:id="userid" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="0" />
<PasswordField id="passwordField1" fx:id="password" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Button id="button1" alignment="CENTER_RIGHT" text="Signin" GridPane.columnIndex="1" GridPane.halignment="RIGHT" GridPane.rowIndex="2" />
</children>
<columnConstraints>
<ColumnConstraints halignment="CENTER" hgrow="NEVER" maxWidth="-Infinity" minWidth="-Infinity" percentWidth="0.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" />
</columnConstraints>
<padding>
<Insets bottom="2.0" left="4.0" right="4.0" top="2.0" />
</padding>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
</rowConstraints>
</GridPane>
</children>
</HBox>
</children>
</AnchorPane>
可能會解決你的問題
0
嘗試使用StackPane作爲容器。它將以它包含的所有節點爲中心。 Torsten
相關問題
- 1. 如何在lightswitch應用程序中打開瀏覽器窗口?
- 2. 如何在瀏覽器窗口中居中HTML元素?
- 3. 在GWT應用程序中打開新的瀏覽器窗口
- 4. 如何從node-webkit應用程序打開瀏覽器窗口?
- 5. Web應用程序如何處理多個瀏覽器窗口
- 6. 如何將Facebook應用程序中的模式窗口居中?
- 7. 如何在瀏覽器退出時終止javafx應用程序
- 8. 如何設置Flex應用程序在瀏覽器窗口中打開
- 9. 如何在React本機中打開應用程序內瀏覽器窗口
- 10. 如何在qooxdoo桌面應用程序中設置瀏覽器窗口標題?
- 11. 使用Eclipse IDE在瀏覽器中運行JavaFx應用程序
- 12. 使用angularjs的多個瀏覽器窗口應用程序
- 13. 從AIR應用程序啓動瀏覽器窗口
- 14. SL5瀏覽器外應用程序,控制包含窗口
- 15. 谷歌瀏覽器打包的應用程序彈出窗口?
- 16. JavaFX 2.0子窗口
- 17. 是否可以在瀏覽器中運行JavaFX應用程序?
- 18. 關閉瀏覽器/窗口Chrome for Prism應用程序
- 19. 從XUL應用程序打開瀏覽器窗口
- 20. 使窗口應用程序對瀏覽器可見
- 21. 如何將圖標設置爲JavaFX應用程序的窗口?
- 22. JavaFX 2.0 - 我如何將現在構建到Web瀏覽器的應用程序嵌入?
- 23. 關閉ASP.NET和AJAX應用程序的瀏覽器窗口
- 24. 如何從瀏覽器中打開的窗口的應用程序
- 25. Silverlight瀏覽器外應用程序的新窗口
- 26. 如何在Firefox瀏覽器窗口
- 27. 用JavaFX縮放窗口時自動居中程序的內容
- 28. 在Web瀏覽器中運行WPF瀏覽器應用程序
- 29. 如何在瀏覽器窗口中並排放置兩個div,居中
- 30. 如何以編程方式將輸入發送到在瀏覽器窗口中運行的Java應用程序?
我按照指示,仍然無法看到屏幕中心的應用程序。我做了以下幾點:爲html文件配置了樣式標籤。還有什麼我該做的? – 2012-02-19 03:38:30
您是否也在dtjava javascript調用中將寬度和高度設置爲百分比(如在答案中的html示例中)? – jewelsea 2012-02-22 22:37:56
是的,我所做的只是一個空白的窗口... – 2012-02-25 18:16:40