2010-12-11 9 views
3

IActionからButtonビルドが必要です。私はそれを自分自身で行うべきか、あるいはJFaceに再利用できる何かがあるのでしょうか?ボタンインスタンスをダイアログのデフォルトボタンにしたいので、ボタンインスタンスが必要です。SWT:アクションからプレーンなプッシュボタンを作成する方法

​​ボタンインスタンスを取得できないようです。

+0

この「ActionContributionItem.fill」メソッドについて言及してくれてありがとうございました。これは本当に私の問題を助けました。 –

答えて

1

fill(parent)の後にparent.getChildren()を呼び出すことができると思います。私は新しいボタンが返されたControl []の最後の項目になると考えています。したがって:

Control kids[] = parent.getChildren(); 

if (kids != null && kids.length != 0) { 
    getShell().setDefaultButton((Button)kids[kids.length - 1]); 

} 

それが最後に引っかかっていない場合は、前と後の子のリストのリストを取得し、新しいエントリを見つける必要があります...しかし、それはほぼ確実に仮止めすることがあります終わり。

+0

ありがとう、それは私が今やっていることです。小さなハックですが、現時点で役立ちます。 – Mot

3

ActionContributionItemに関連付けられたインスタンスButtonを得るには、getWidget()メソッドを使用する方が良いと思います。ActionContributionItem

ActionContributionItem aci = new ActionContributionItem(action); 
    ai.fill(parent); 
    Button widget = (Button) ai.getWidget(); 
+2

+1はるかに良い、はい。ボタンへのキャスティングは、「最後の子供をつかんで、そのボタンを願ってボタンにキャストする」と比較して、かなり悪いことです。 –

+0

ええ、APIはこの場合かなり奇妙です。もし 'fill'メソッドを使わずに' ToolBemManager/MenuManager/CoolBarManager'を 'add'メソッドで使うと' Button'の代わりに 'ToolItem/MenuItem'を' getWidget'メソッドを呼び出します。アクションAPIをより複雑にし、基礎となるウィジェットを取得する必要はありません。 –

関連する問題