【问题标题】:How to justify menu item accelerators to the different menu width?如何将菜单项加速器调整为不同的菜单宽度?
【发布时间】:2017-01-20 16:12:23
【问题描述】:

我的menu-button 有点宽:

.menu-button {
  -fx-pref-width: 250px;
  -fx-background-color: #72b3c9;
  -fx-padding: 5 16 5 16;
}

并且菜单及其项目(及其加速键)按预期显示,如下所示:

但是当我想将menu-item的宽度与menu-button的宽度对齐时,像这样:

.menu-item {
  -fx-pref-width: 250px;
  -fx-pref-height: 40px;
  -fx-padding: 5px 16px 5px 16px;
}

然后我没有将加速键对齐到菜单项的右侧:

我想要(并且期望)是加速键跟随菜单项的宽度,并且与各自菜单项的右边缘对齐,如下所示:

我怎样才能做到这一点?

编辑:

可以使用增加左标签填充的技巧,从而迫使加速器更靠右:

.menu-item .label {
  -fx-padding: 0 120px 0 0;
}

但是,这是一种硬编码的依赖于平台的方法,每次更改菜单项标签文本或加速键时都需要进行调整。

【问题讨论】:

  • 一个问题,如何在menu-item 的同一行显示两个(文本)项?
  • @BoHalim,这不是两个单独的项目,而是一个菜单项及其加速器。使用menuItem.setAccelerator(KeyCombination.keyCombination(keyCombination)); 以编程方式添加加速器。

标签: css javafx menu java-8


【解决方案1】:

这是我设法实现的一个解决方案,就像默认颜色一样,它不会出现,但如果你输入两种不同的颜色(LabelBackground),它现在会很难看,它是唯一的我意识到的事情。我知道有些东西不见了,但我不知道是什么:

 .menu-button {

  -fx-pref-width: 250px;
  -fx-background-color: #72b3c9;

 }

 .menu-item {

   -fx-pref-width: 250px;

 }

 .menu-item > .label{

  -fx-pref-width: 200px;

 }

努力完善它,在我这边我会努力找到更好的解决方案,祝你好运!

【讨论】:

  • 我已经尝试过这种方法,但它会强制加速器左对齐而不是右对齐。尝试使用更长的组合键设置第二个加速器,例如“Ctrl+Shift+S”你就会看到问题了。
【解决方案2】:

这已经是一个非常古老的问题了,您可能已经找到了一些解决方案。但是我在这里给出我的答案,以便其他人可以发现它有用。

不要为.menu-item 或其子.menu-item > .label 设置任何宽度。仅在.accelerator-text 中设置填充,如下所示:

.menu-item > .accelerator-text {
    -fx-padding: 0 0 0 30px;
}

自定义左侧填充以调整菜单项的宽度。

【讨论】:

  • 感谢您的建议,但不够灵活。它确实允许右对齐的加速器文本,但由于它们的容器没有与菜单右对齐,因此对加速器或菜单项文本的任何更改都会破坏“硬编码”对齐。只需尝试使用更长的组合键设置第二个加速器,例如“Ctrl+Shift+S”你就会看到问题了。
猜你喜欢
  • 1970-01-01
  • 2016-06-14
  • 1970-01-01
  • 2015-11-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-30
  • 2020-10-26
  • 1970-01-01
相关资源
最近更新 更多