これを行う最も簡単な方法は、列間に必要な空白を計算するメソッドを作成することです。最初に最大の 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:ただし、これも機能しません...テキストを右に揃えます。