1

現在、次のような SWT メニューがあります。

ここに画像の説明を入力

矢印を揃えたい(上下に並べる)。矢印の前のテキストは必ずしも同じではありません。私の最初のアイデアは、メニュー項目のフォントを固定フォント (Courer など) に変更し、矢印を最も長いテキスト長に移動することでした (短いテキストにスペースを追加するだけです)。

しかし、Eclipseフォーラムの投稿によると、フォントをMenuItemに変更することはできません。私の他のアイデアは、ポップアップとして3列のTableViewerを表示することでしたが、その方法がわかりません。

どんなアイデアでも大歓迎です。

4

1 に答える 1

0

これを行う最も簡単な方法は、列間に必要な空白を計算するメソッドを作成することです。最初に最大の MenuItem テキストを見つけてから、いくつかの空白を追加する必要があります。あなたの例では、「いくつかのテキスト0いくつかのテキスト」になります。25文字あります。次に、空のスペースを追加します (例 5 を見てみましょう)。したがって、次の列のオフセットは 30 文字にする必要があります。30 - menuItem.getText().length()MenuItem ごとに空白を追加する必要があります。あなたが私の考えを得たことを願っています。

編集:フォントのサイズが固定されていないことはわかりませんでした。

別の解決策は\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 に答える