我的 JavaFX 场景一团糟
My JavaFX Scene is a mess
我很难在我的 JavaFX 场景中对齐项目。
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.ToolBar?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.Pane?>
<Pane minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1" fx:controller="app.controller.TableViewController">
<ScrollPane>
<TableView fx:id="tableView" prefHeight="500.0" prefWidth="1100.0" snapToPixel="false" styleClass="100">
</TableView>
</ScrollPane>
<ToolBar maxHeight="35.0" prefHeight="35.0" prefWidth="1200" style="-fx-background-color: #8C0000;">
<ImageView fitHeight="35.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true">
<Image url="@../images/qmit-search-toolbar-logo.png" />
</ImageView>
<TextArea fx:id="linkInput" maxHeight="30.0" maxWidth="250.0" />
<TextArea fx:id="keywordInput" maxHeight="30.0" maxWidth="100.0" />
<Button fx:id="buttonSearch" maxHeight="30.0" maxWidth="100.0" text="Search QMIT" />
</ToolBar>
</Pane>
我的目标是拥有一个带有徽标、两个输入文本字段和一个按钮的工具栏。下面,一个 table 位于屏幕中央。我到底做错了什么,弄得一团糟?
A Pane
没有自己的布局。
(顺便说一句,请注意 TableView
提供了自己的滚动功能:不要将其包装在滚动窗格中。)
例如,使用 BorderPane
:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.ToolBar?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1" fx:controller="app.controller.TableViewController">
<center>
<TableView fx:id="tableView" prefHeight="500.0" prefWidth="1100.0" snapToPixel="false" styleClass="100">
</TableView>
</center>
<top>
<ToolBar maxHeight="35.0" prefHeight="35.0" prefWidth="1200" style="-fx-background-color: #8C0000;">
<ImageView fitHeight="35.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true">
<Image url="@../images/qmit-search-toolbar-logo.png" />
</ImageView>
<TextArea fx:id="linkInput" maxHeight="30.0" maxWidth="250.0" />
<TextArea fx:id="keywordInput" maxHeight="30.0" maxWidth="100.0" />
<Button fx:id="buttonSearch" maxHeight="30.0" maxWidth="100.0" text="Search QMIT" />
</ToolBar>
</top>
</BorderPane>
Oracle JavaFX 教程有一个 section on layout panes。
尝试使用 VBox 而不是 Pane 作为基础,并首先使用 TextFields 而不是 TextAreas 添加工具栏,然后使用 TableView 添加 ScrollPane
使用 JavaFX Scene Builder 比手动编写 FXML 简单得多。
可以从Oracle网站下载。
http://www.oracle.com/technetwork/java/javase/downloads/sb2download-2177776.html
我很难在我的 JavaFX 场景中对齐项目。
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.ToolBar?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.Pane?>
<Pane minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1" fx:controller="app.controller.TableViewController">
<ScrollPane>
<TableView fx:id="tableView" prefHeight="500.0" prefWidth="1100.0" snapToPixel="false" styleClass="100">
</TableView>
</ScrollPane>
<ToolBar maxHeight="35.0" prefHeight="35.0" prefWidth="1200" style="-fx-background-color: #8C0000;">
<ImageView fitHeight="35.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true">
<Image url="@../images/qmit-search-toolbar-logo.png" />
</ImageView>
<TextArea fx:id="linkInput" maxHeight="30.0" maxWidth="250.0" />
<TextArea fx:id="keywordInput" maxHeight="30.0" maxWidth="100.0" />
<Button fx:id="buttonSearch" maxHeight="30.0" maxWidth="100.0" text="Search QMIT" />
</ToolBar>
</Pane>
我的目标是拥有一个带有徽标、两个输入文本字段和一个按钮的工具栏。下面,一个 table 位于屏幕中央。我到底做错了什么,弄得一团糟?
A Pane
没有自己的布局。
(顺便说一句,请注意 TableView
提供了自己的滚动功能:不要将其包装在滚动窗格中。)
例如,使用 BorderPane
:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.ToolBar?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1" fx:controller="app.controller.TableViewController">
<center>
<TableView fx:id="tableView" prefHeight="500.0" prefWidth="1100.0" snapToPixel="false" styleClass="100">
</TableView>
</center>
<top>
<ToolBar maxHeight="35.0" prefHeight="35.0" prefWidth="1200" style="-fx-background-color: #8C0000;">
<ImageView fitHeight="35.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true">
<Image url="@../images/qmit-search-toolbar-logo.png" />
</ImageView>
<TextArea fx:id="linkInput" maxHeight="30.0" maxWidth="250.0" />
<TextArea fx:id="keywordInput" maxHeight="30.0" maxWidth="100.0" />
<Button fx:id="buttonSearch" maxHeight="30.0" maxWidth="100.0" text="Search QMIT" />
</ToolBar>
</top>
</BorderPane>
Oracle JavaFX 教程有一个 section on layout panes。
尝试使用 VBox 而不是 Pane 作为基础,并首先使用 TextFields 而不是 TextAreas 添加工具栏,然后使用 TableView 添加 ScrollPane
使用 JavaFX Scene Builder 比手动编写 FXML 简单得多。
可以从Oracle网站下载。 http://www.oracle.com/technetwork/java/javase/downloads/sb2download-2177776.html