1

目前我有一个看起来像这样的 SWT 菜单:

在此处输入图像描述

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

但是,根据eclipse 论坛帖子,将字体更改为 MenuItem 是不可能的。我的另一个想法是将带有 3 列的 TableViewer 显示为弹出窗口,但我不知道该怎么做。

任何想法表示赞赏。

4

1 回答 1

0

最简单的方法是创建一个方法,该方法计算列之间所需的空格。您首先需要找出最大的 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:但是这也不起作用......它将文本向右对齐。

于 2013-01-29T11:47:45.273 回答