java - 将 JavaFX 菜单项文本居中对齐

标签 java javafx text-alignment text-align

我正在尝试使用 css 将下面的自定义 MenuItem 文本的对齐方式更改为居中,但我无法实现它,并且得到以下结果:

用作文本Label并且鼠标未悬停在LabelMenuItem上方:

enter image description here

用作文本common并且鼠标悬停在LabelMenuItem上:

enter image description here

图像 3 [问题是标签宽度小于 ContextMenu 宽度]:

enter image description here

如您所见,它位于左侧。我已经尝试了使用 css 的所有方法,但它只是不想改变它的位置

<小时/>

我想要实现什么?

我需要在一些 ContextMenu MenuItems 上方添加标签。我实现了这一点,但现在我需要该标签的 -Text-alignment- 位于中心。

在 css 分析器中,此属性默认为 LEFT enter image description here

<小时/>

CSS代码(更新,显示标签宽度问题):

/*******************************************************************************

*                           Label-Menu-Item                            *

******************************************************************************/

.label-menu-item .label{
     -fx-text-alignment:center; 
}

.label-menu-item .label .text{
     -fx-text-alignment:center; 
}


/* When the Label-Menu-Item is disabled [Always it is cause i don't want the user to be able to click it] */
.label-menu-item:disabled {
    -fx-opacity: 1.0;
    -fx-border-color:transparent white white white;
    -fx-cursor:default;
}

.label-menu-item:disabled:hover{
    -fx-background-color: blue;
}

.label-menu-item:disabled .label {
    -fx-opacity: 1.0;
    -fx-font-size:10.0;
    -fx-font-weight:bold;
    -fx-text-fill:white;
    -fx-text-alignment:center; 
}

.label-menu-item:disabled:hover .label {
    -fx-background-color: firebrick;
}
<小时/>

LabelMenuItem.java:

import javafx.scene.control.MenuItem;

/**
 * @author GOXR3PLUS
 *
 */
public class LabelMenuItem extends MenuItem {

    /**
     * Constructor
     * 
     * @param text
     *            The Text of The Menu Item
     * 
     */
    public LabelMenuItem(String text) {
    setText(text);
    setDisable(true);
    getStyleClass().clear();
    getStyleClass().add("label-menu-item");
    }

}

最佳答案

如果你尝试这个:

.label-menu-item .label{
       //and here
      -fx-text-alignment:center; 
}

.label-menu-item .label .text{
      //and here
      -fx-text-alignment:center; 
}

而不是这个:

.menu-item .label{
       //and here
      -fx-text-alignment:center; 
}

.menu-item .label .text{
      //and here
      -fx-text-alignment:center; 
}

有效果吗?

如果不是,也许Label只是不会扩展直到右边框(即具有与文本完全相同的大小,因此不同的对齐方式不会改变任何内容)?然后尝试更改Label的宽度。

关于java - 将 JavaFX 菜单项文本居中对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42420037/

相关文章:

java - 在jlist中添加图片

Javafx:更改 setOnAction 中的场景

java - 为什么我无法在 java 中创建 ComboBox 数组?

html - 是否有一些标签可以提供 <p> 的功能而无需添加换行符?

java - 我的java猜数程序错误

java - Android 构造函数未定义

Java:一种将 Mime(内容)类型与 CommonsMultipartFile 的文件扩展名相匹配的方法

java - 我无法获取 db 文件的连接字符串

html - 将 html block 的宽度限制为兄弟的宽度

html - 将文本对齐到导航栏的中心