什么相当于JavaFX中的JPanel

我还在JavaFX中学习和试验GUI ,我似乎无法获得我想要的“外观”..我试图在一个Panel中组合几个标签 ,然后在另一个面板中添加另一个标签 。 但我似乎无法弄清楚如何在JavaFX中正确使用“JPanels”

任何帮助将不胜感激:D谢谢

编辑:这是我试图通过尝试不同的布局,仍然没有运气

预习

虽然Java FX Pane类似于Swing JPanel ,但下面的示例使用Pane子类来获得各种布局效果。 尤其是,

  • 而不是将JPanel设置为GridLayout ,而是使用GridPane

  • 而不是将JPanel设置为BoderLayout ,而是使用BorderPane

  • 使用ContentDisplay.TOP将标签的内容定位在其文本上方,如此处所示。

  • 使用ContentDisplay.CENTER for topCenter使标签覆盖矩形; 为了比较,以前的版本使用了StackPane

  • 使用setPadding()setMargin()setVgap()来展开一些东西。

图片

 import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.ContentDisplay; import javafx.scene.control.Label; import javafx.scene.layout.Background; import javafx.scene.layout.BackgroundFill; import javafx.scene.layout.Border; import javafx.scene.layout.BorderPane; import javafx.scene.layout.BorderStroke; import javafx.scene.layout.BorderStrokeStyle; import javafx.scene.layout.BorderWidths; import javafx.scene.layout.CornerRadii; import javafx.scene.layout.GridPane; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.scene.text.Font; import javafx.stage.Stage; /** * @see https://stackoverflow.com/a/37935114/230513 */ public class BorderTest extends Application { private static final Border black = new Border(new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, new CornerRadii(8), new BorderWidths(2))); private static final Border red = new Border(new BorderStroke(Color.RED, BorderStrokeStyle.SOLID, new CornerRadii(8), new BorderWidths(2))); private static final Border blue = new Border(new BorderStroke(Color.BLUE, BorderStrokeStyle.SOLID, new CornerRadii(8), new BorderWidths(2))); private static final Color yellow = Color.YELLOW.deriveColor(0, .9, 1, 1); @Override public void start(Stage primaryStage) { primaryStage.setTitle("Test"); GridPane root = new GridPane(); root.setPadding(new Insets(16)); root.setVgap(16); root.setBorder(black); root.setBackground(new Background(new BackgroundFill( Color.LIGHTGRAY, CornerRadii.EMPTY, Insets.EMPTY))); BorderPane top = new BorderPane(); top.setPadding(new Insets(16)); top.setBorder(red); top.setLeft(createLabel("Label 1", yellow, 16)); Label topCenter = createLabel("Label 2", yellow, 64); topCenter.setContentDisplay(ContentDisplay.CENTER); BorderPane.setMargin(topCenter, new Insets(16)); top.setCenter(topCenter); top.setRight(createLabel("Label 3", yellow, 16)); root.add(top, 0, 0); BorderPane bot = new BorderPane(); bot.setPadding(new Insets(16)); bot.setBorder(blue); bot.setCenter(createLabel("Label 4", Color.GREEN, 24)); root.add(bot, 0, 1); Scene scene = new Scene(root); primaryStage.setScene(scene); primaryStage.show(); } private Label createLabel(String text, Color color, int size) { Rectangle r = new Rectangle(3 * size, 2 * size); r.setFill(Color.TRANSPARENT); r.setStroke(color); r.setStrokeWidth(3); Label l = new Label(text, r); l.setContentDisplay(ContentDisplay.TOP); l.setTextFill(color); l.setFont(new Font(16)); return l; } public static void main(String[] args) { launch(args); } } 

相当于JPanelJavaFX是一个Pane

你可以有一些非常好的教程http://java2s.com/关于javaFX以及更多.JavaFX相当于JPanel是Pane和一个例子:(取自http://zetcode.com/gui/javafx/layoutpanes/ )

在此处输入图像描述

 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.layout.Pane; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; import javafx.scene.shape.Line; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; /** * ZetCode JavaFX tutorial * * This program positions three shapes * using absolute coordinates. * * Author: Jan Bodnar * Website: zetcode.com * Last modified: June 2015 */ public class AbsoluteLayoutEx extends Application { @Override public void start(Stage stage) { initUI(stage); } private void initUI(Stage stage) { Pane root = new Pane(); Rectangle rect = new Rectangle(25, 25, 50, 50); rect.setFill(Color.CADETBLUE); Line line = new Line(90, 40, 230, 40); line.setStroke(Color.BLACK); Circle circle = new Circle(130, 130, 30); circle.setFill(Color.CHOCOLATE); root.getChildren().addAll(rect, line, circle); Scene scene = new Scene(root, 250, 220, Color.WHITESMOKE); stage.setTitle("Absolute layout"); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } }