gpt4 book ai didi

java - 在菜单中显示多列

转载 作者:行者123 更新时间:2023-12-01 04:53:22 28 4
gpt4 key购买 nike

目前我有一个如下所示的 SWT 菜单:

enter image description here

我希望箭头对齐(一个在另一个下面)。箭头之前的文本并不总是相同。我的第一个想法是将菜单项的字体更改为某种固定字体(例如 Courer),然后我可以将箭头移动到最长的文本长度(只需向较短的文本添加空格)。

但是,根据 eclipse forum post无法将字体更改为 MenuItem。我的另一个想法是显示具有 3 列的 TableViewer 作为弹出窗口,但我不知道如何做到这一点。

任何想法都会受到赞赏。

最佳答案

最简单的方法是创建一个方法,该方法计算列之间所需的空白空间。您首先需要找出最大的 MenuItem 文本,然后添加一些空白。在您的示例中,这将是“一些文本0一些更多文本”。它有 25 个字符。然后添加空格(以 5 为例)。因此下一列的偏移量应为 30 个字符。对于每个 MenuItem,您必须添加 30 - menuItem.getText().length() 空格。我希望你明白我的想法。

编辑:我没有看到字体大小不固定。

另一个解决方案是在文本中使用\t。我玩过以下示例:

package la.la.la;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;

public class PopupMenuCreate {

MenuItem fileExitItem, fileSaveItem;
static MenuItem helpGetHelpItem;
static MenuItem helpGetHelpItem2;
static MenuItem helpGetHelpItem3;
static MenuItem helpGetHelpItem4;
static MenuItem helpGetHelpItem5;

public static void main(final String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new GridLayout());

final Button bn = new Button(shell, SWT.FLAT);
bn.setText("Right Click HERE to see the popup menu");

final Menu helpMenu = new Menu(bn);
final MenuItem newItem = new MenuItem(helpMenu, SWT.CASCADE);
newItem.setText("New");
final MenuItem refreshItem = new MenuItem(helpMenu, SWT.NONE);
refreshItem.setText("Refresh");
final MenuItem deleteItem = new MenuItem(helpMenu, SWT.NONE);
deleteItem.setText("Delete");

helpGetHelpItem = new MenuItem(helpMenu, SWT.PUSH);
helpGetHelpItem.setText("&Get \tHelp");

helpGetHelpItem2 = new MenuItem(helpMenu, SWT.PUSH);
helpGetHelpItem2.setText("&Gets \tHelp");
helpGetHelpItem3 = new MenuItem(helpMenu, SWT.PUSH);
helpGetHelpItem3.setText("&Getscccccc \tHdas sdad aasd");
helpGetHelpItem4 = new MenuItem(helpMenu, SWT.PUSH);
helpGetHelpItem4.setText("&Getscccccc asd sda \tsasa");
helpGetHelpItem5 = new MenuItem(helpMenu, SWT.PUSH);
helpGetHelpItem5.setText("&Getscccccc dsa ddd asd das asd fdslfdsnjkl nsdjkl nsdjklm fsjkl \tLalalal");

final Menu newMenu = new Menu(helpMenu);
newItem.setMenu(newMenu);

final MenuItem shortcutItem = new MenuItem(newMenu, SWT.NONE);
shortcutItem.setText("Shortcut");
final MenuItem iconItem = new MenuItem(newMenu, SWT.NONE);
iconItem.setText("Icon");

bn.setMenu(helpMenu);



shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
}

EDIT2:但是这也不起作用...它将文本向右对齐。

关于java - 在菜单中显示多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14581899/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com