3

Eclipse SWT ランドでは、複数のスタイルをコントロールに追加できる場合に便利です。ツールバーには複数のスタイルを追加できます。ツールアイテムは同じ特典を享受できませんか?回避策は何ですか?

ToolItem API は、次のことを明確に述べています。

スタイル CHECK、PUSH、RADIO、SEPARATOR、および DROP_DOWN のうち 1 つだけを指定できます。

基本的に、ドロップダウン付きのラジオ ボタンのように動作するツールバー項目が必要です。ユーザーがドロップダウンのアイテムのリストからアイテムのデフォルト アクションを変更できるようにしたい。

誰か親切に私を正しい方向に向けることができますか?

    ...
    ToolBar toolBar = new ToolBar(composite, SWT.FLAT | SWT.RIGHT | SWT.HORIZONTAL);

    ToolItem item1 = new ToolItem(toolBar, SWT.RADIO);
    item1.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            // do something
        }
    });
    item1.setImage(image1);

    ToolItem item2 = new ToolItem(toolBar, SWT.RADIO | STW.DROP_DOWN); //only allowed in my dreams
    item2.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            // do a drop down action and lots more.
            // change image of this ToolItem to match the drop down selection.
            item2.setImage(selectedImage);
        }

    });
    item2.setImage(image2);
4

1 に答える 1

1

このスニペットは、ドロップダウン メニューの作成方法を示しています。ラジオ ボタンを取得するには、MenuItem に SWT.PUSH ではなく SWT.RADIO スタイルを使用します。

final ToolBar toolBar = new ToolBar (shell, SWT.NONE);
Rectangle clientArea = shell.getClientArea ();
toolBar.setLocation(clientArea.x, clientArea.y);
final Menu menu = new Menu (shell, SWT.POP_UP);
for (int i=0; i<8; i++) {
    MenuItem item = new MenuItem (menu, SWT.PUSH);
item.setText ("Item " + i);
}
final ToolItem item = new ToolItem (toolBar, SWT.DROP_DOWN);
item.addListener (SWT.Selection, new Listener () {
    public void handleEvent (Event event) {
        if (event.detail == SWT.ARROW) {
        Rectangle rect = item.getBounds ();
    Point pt = new Point (rect.x, rect.y + rect.height);
    pt = toolBar.toDisplay (pt);
    menu.setLocation (pt.x, pt.y);
    menu.setVisible (true);
        }
}
});
toolBar.pack ();
于 2013-08-22T14:33:21.213 に答える