目前我有一个看起来像这样的 SWT 菜单:
我希望箭头对齐(一个在另一个下方)。箭头之前的文本并不总是相同的。我的第一个想法是将菜单项的字体更改为某种固定字体(例如 Courer),然后我可以将箭头移动到最长的文本长度(只需在较短的文本中添加空格)。
但是,根据eclipse 论坛帖子,将字体更改为 MenuItem 是不可能的。我的另一个想法是将带有 3 列的 TableViewer 显示为弹出窗口,但我不知道该怎么做。
任何想法表示赞赏。
目前我有一个看起来像这样的 SWT 菜单:
我希望箭头对齐(一个在另一个下方)。箭头之前的文本并不总是相同的。我的第一个想法是将菜单项的字体更改为某种固定字体(例如 Courer),然后我可以将箭头移动到最长的文本长度(只需在较短的文本中添加空格)。
但是,根据eclipse 论坛帖子,将字体更改为 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:但是这也不起作用......它将文本向右对齐。