切换javafx中按钮的组

时间:2016-10-27 14:27:44

标签: java javafx

我有以下代码,它是javafx中的一组按钮:

ToggleGroup groupLevelQ = new ToggleGroup();

    class MyLevelButton extends ToggleButton {
        public MyLevelButton(String name) {
            super(name);
            setPrefWidth(50.0);
            setPrefHeight(50.0);
            setStyle("-fx-font: 20 cornerstone; -fx-base: #17499F;");
            setToggleGroup(groupLevelQ);
        }
    }

    oneLevelButton = new MyLevelButton("1");
    twoLevelButton = new MyLevelButton("2");
    threeLevelButton = new MyLevelButton("3");
    fourLevelButton = new MyLevelButton("4");
    fiveLevelButton = new MyLevelButton("5");
    sixLevelButton = new MyLevelButton("6");
    sevenLevelButton = new MyLevelButton("7");
    eightLevelButton = new MyLevelButton("8");
    nineLevelButton = new MyLevelButton("9");

    oneLevelButton.setUserData("1");
    twoLevelButton.setUserData("2");
    threeLevelButton.setUserData("3");
    fourLevelButton.setUserData("4");
    fiveLevelButton.setUserData("5");
    sixLevelButton.setUserData("6");
    sevenLevelButton.setUserData("7");
    eightLevelButton.setUserData("8");
    nineLevelButton.setUserData("9");

    groupLevelQ.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {
        public void changed(ObservableValue<? extends Toggle> ov, Toggle toggle, Toggle new_toggle) {
            if (new_toggle != null) {
                textLevelQ = (String) groupLevelQ.getSelectedToggle().getUserData();
            }

        }
    });

    addQButtonPane.add(oneLevelButton, 1, 9);
    addQButtonPane.add(twoLevelButton, 2, 9);
    addQButtonPane.add(threeLevelButton, 3, 9);
    addQButtonPane.add(fourLevelButton, 4, 9);
    addQButtonPane.add(fiveLevelButton, 5, 9);
    addQButtonPane.add(sixLevelButton, 6, 9);
    addQButtonPane.add(sevenLevelButton, 7, 9);
    addQButtonPane.add(eightLevelButton, 8, 9);
    addQButtonPane.add(nineLevelButton, 9, 9);

实际上我正在创建按钮,我将它们添加到GridPane中。我想弄清楚如何定义按钮之间的距离。基本上就像他们现在一样,他们有一个默认距离,我想改变它。

编辑:

addQButtonPane = new GridPane();
    addQButtonPane.setHgap(10);
    addQButtonPane.setVgap(10);
    addQButtonPane.setPadding(new Insets(0, 50, 0, 50));
    addQButtonPane.setStyle("-fx-background-color: #95CBE5;");

这是格式化网格面板的方式。但是我仍然希望仅针对具体提到的按钮改变这种形式。

EDIT2:

enter image description here

1 个答案:

答案 0 :(得分:1)

通过将包含选项和HBox元素的Text es放在VBox中,可能会更好地实现您尝试实现的布局。

但是,如果您正在寻找一种“将按钮排除在常规布局之外”的方法,您只需将它们放在HBox内使用覆盖所有剩余列的columnSpan:< / p>

double buttonDistance = ...
int gridPaneColumnCount = ...
HBox buttonBox = new HBox(buttonDistance,
    oneLevelButton,
    twoLevelButton,
    threeLevelButton,
    fourLevelButton,
    fiveLevelButton,
    sixLevelButton,
    sevenLevelButton,
    eightLevelButton,
    nineLevelButton);

addQButtonPane.add(buttonBox, 1, 9, gridPaneColumnCount-1, 1);