我想做一个带有清除和开始按钮的数字键盘,但是因为清除和开始按钮比数字按钮宽,所以前两列之间有一个间隙。这里有一张图片:
前两列之间有间隙的数字键盘:
我试过寻找答案,但我没有找到这样的东西。很难向搜索引擎解释。
我期望0按钮与numpad的中间对齐(它确实如此),清除和开始按钮在两侧伸出。但它将清晰按钮与7按钮对齐,造成差距。下面是一个可重复的示例:
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Font;
import javafx.stage.Stage;
public class ReproducibleGap extends Application {
@Override
public void start(Stage primaryStage) {
Scene scene = new Scene(new ButtonGrid());
primaryStage.setTitle("Numpad");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
class ButtonGrid extends GridPane {
protected Button[] numpad = new Button[10];
protected Button clear;
protected Button start;
ButtonGrid() {
Font buttonFont = new Font(18);
for (int i = 0; i < numpad.length; i++) {
numpad[i] = new Button(String.valueOf(i));
numpad[i].setFont(buttonFont);
}
setAlignment(Pos.CENTER);
setPadding(new Insets(50, 0, 0, 0));
for (int i = 0; i < 3; i++) {
addRow(i, numpad[i * 3 + 1], numpad[i * 3 + 2], numpad[i * 3 + 3]);
}
clear = new Button("Clear");
clear.setFont(buttonFont);
start = new Button("Start");
start.setFont(buttonFont);
addRow(3, clear, numpad[0], start);
}
}
1条答案
按热度按时间mkh04yzy1#
“clear和start按钮在两侧伸出”--如果我理解正确的话,那么您只需要配置第一列中的节点,使其在有空空间时向右对齐。可以通过ColumnConstraints对整个列执行此操作,也可以通过GridPane#setHalignment(Node,HPos)-Slaw对单个节点执行此操作
非常感谢!我补充道:
现在它看起来像这样:
这正是我想要的