我尝试通过各种方式手动设置窗口中元素(按钮)的位置(我尝试将几个按钮一个接一个地依次放置)。我按顺序创建了三个按钮,但屏幕上只显示最后一个按钮,只有按下它才有效。我找到了一种方法setLayoutX
,似乎可以让您沿 X 轴设置位置,但这无济于事,元素位于左上角(显然三个都在那里,一个在另一个下方)。
如果不GridPane
使用StackPane
,则元素位于中心,也只有一个。一般来说,我无法理解这是怎么回事)
import javafx.application.Application
import javafx.event.ActionEvent
import javafx.event.EventHandler
import javafx.scene.Scene
import javafx.scene.control.Button
import javafx.scene.layout.StackPane
import javafx.stage.Stage
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.text;
import javafx.scene.control;
import javafx.scene.paint;
import javafx.geometry;
object Main {
def main(args:Array[String])
{
val witchers: List[String] = new List();
witchers.AddBack("The Witcher")
witchers.AddBack("The Witcher 2")
witchers.AddBack("The Witcher 3")
Application.launch(classOf[Main], args: _*)
}
}
class Main extends Application {
override def start(primaryStage: Stage) {
primaryStage.setTitle("For Romanov")
var buttons = new List[Button]
val pane = new GridPane//StackPane
val witchers: List[String] = new List();
witchers.AddBack("The Witcher")
witchers.AddBack("The Witcher 2")
witchers.AddBack("The Witcher 3")
var layoutX = 5.toDouble;
for (witcher <- witchers) {
var btn = new Button
btn.setText(witcher)
btn.setLayoutX(layoutX)
btn.setOnAction(new EventHandler[ActionEvent] {
override def handle(e: ActionEvent) {
println(witcher)
}
})
var hbBtn = new HBox(10);
hbBtn.setAlignment(javafx.geometry.Pos.BASELINE_RIGHT);
hbBtn.getChildren().add(btn);
//pane.getChildren.add(btn)
pane.add(hbBtn, 40, 40)
layoutX += 100
}
primaryStage.setScene(new Scene(pane, 500, 500))
primaryStage.show
}
}
1 个回答