Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用行上的文本标记文本的方法_Java_Css_Checkbox_Javafx 8_Scenebuilder - Fatal编程技术网

Java 使用行上的文本标记文本的方法

Java 使用行上的文本标记文本的方法,java,css,checkbox,javafx-8,scenebuilder,Java,Css,Checkbox,Javafx 8,Scenebuilder,我在FXML文件中有一个普通复选框,与HBox中的一些其他控件和标签位于同一行 复选框标签文本基大约比同一行(HBox)上的所有其他文本和标签低6px单位 我可以通过指定padding bottom值:6在SceneBuilder中手动排列。我想把它放到CSS中,这样所有的复选框标签都会“对齐”,但是我尝试过的所有东西都会被忽略,并且不会显示在CSS分析器中 我查看了Checbox默认样式,如下所示: 而且: 在UI控件中 我对ListBox也有类似的问题,它的控件是由许多组件构成的。你必须

我在FXML文件中有一个普通复选框,与HBox中的一些其他控件和标签位于同一行

复选框标签文本基大约比同一行(HBox)上的所有其他文本和标签低6px单位

我可以通过指定padding bottom值:6在SceneBuilder中手动排列。我想把它放到CSS中,这样所有的复选框标签都会“对齐”,但是我尝试过的所有东西都会被忽略,并且不会显示在CSS分析器中

我查看了Checbox默认样式,如下所示:

  • 而且:
  • 在UI控件中
我对ListBox也有类似的问题,它的控件是由许多组件构成的。你必须知道哪件事是相关的。但是,查看:com/sun/javafx/scene/control/skin/

  • caspian/caspian.css
我无法选择使文本标签低于同一行/行上其他文本的组件。除此之外,在SceneBuilder designer布局中指定填充将逐个(手动)解决此问题,但奇怪的是,它不适用于:

.check-box {
    padding-bottom: 6px;  /* or just 6  */
}
不适用于以下FXML标记

  <HBox alignment="CENTER_LEFT" >
     <children>
        <CheckBox fx:id="acknowledged" alignment="TOP_LEFT" styleClass="normal" text="00">
           <padding>
              <Insets bottom="6.0" left="4.0" right="8.0" />
           </padding>
        </CheckBox>
        <Button fx:id="detailButton" text="%alarm.detail.label" />
        <Label fx:id="alarmType" styleClass="normal" text="%alarm.type.value">
           <padding>
              <Insets left="8.0" right="8.0" />
           </padding>
        </Label>
     </children>
  </HBox>

目标是通过CSS定义填充底部,而不必在FXML中手动执行:

    <padding>
         <Insets bottom="6.0" left="4.0" right="8.0" />
   </padding>

有什么想法吗


要清楚,此行的视觉结果是复选框本身的基线比其他元素(按钮、标签)小/低。复选框标签随后也在其他元素的“下方”。如果我们可以使用CSS填充,那么我们就不需要手动维护布局。

一般来说,对齐问题应该通过布局来解决(与调整填充或类似)。因此,解决方案的第一站可能是父窗格的文档,这里是HBox:

内容的对齐方式由“对齐”属性控制, 默认为左上角位置

这可能与您看到的一致(但不能100%确定,因为您忘了包含一个可运行的示例;-)如果该行上的所有其他组件意外地高度相同或在框中填充了较小的复选框,则它将位于窗格顶部

假设解决方案是将窗格的对齐方式更改为基线_XX,快速签入代码对我来说很好:

private Parent getContent() {
    HBox box = new HBox(new TextField("something"), 
            new CheckBox("soso"), new Button("hello"));
    box.setAlignment(Pos.BASELINE_CENTER);
    return box;
}

是的——这是正确的,“内容的对齐方式由对齐属性控制”,并且所有元素都在左下角对齐。然而,复选框元素和标签文本比这个HBox中的其他文本项大约低6px——因此需要回答这个问题。同样在左中,每个元素都在同一条基线上对齐,复选框仍然太低约6像素。如果问起,复选框的子组件似乎“吃掉”了一些像素。在示例中,“soso”将比“something”和“hello”按钮低约6px。我更喜欢布局解决方案。到目前为止,设置行内填充是唯一合适的方法。@听起来您好像忘记在问题中包含所有相关细节;-)据我所知,除了基线,你不能让文本对齐任何其他对齐方式:如果他们让底部/顶部对齐,那纯粹是巧合。无论如何,程序和往常一样:为了获得最佳帮助,请展示一个SSCCE,演示问题中的问题:“复选框标签文本基数比同一行上的所有其他文本和标签(HBox)低约6px单位。”问题中显示的CSS不会在复选框中添加填充底部。目的是通过样式表纠正所有复选框的问题。既然这就是问题所在,那么问题是,“这个复选框类或子类的正确样式是什么?”@将仅与底部对齐。。。基线很好。再说一次:除了在基线中,你不能期望文本对齐,如果是对其他文本,你就是幸运的。所以:祝你好运:-)