我在工具欄中有幾個SWT ToolItems
,其樣式爲SWT.RADIO
。我想使用toolItem.setSelection(false)
以編程方式取消所有這些選項,但這是不可能的。當前選擇的ToolItem
仍處於選中狀態。我可以使用toolItem.setSelection(true)
選擇另一個ToolItem,這將取消選擇第一個,但是我找不到一個方法來取消選擇它們,但是當GUI啓動時,所有這些都被取消選擇。有誰知道如何取消全部選擇?取消選擇組中的所有SWT單選按鈕
更新:我想通了,是什麼問題:我查@rgeorge發現toolItem.setSelection(false)
作品,如果工具欄與池莉構建ToolBar toolBar = new ToolBar(shell)
。但是,如果我使用Mac上的(窗口框架統一工具欄)上的shell.getToolBar()
可以獲取的工具欄,則它不起作用。看起來像SWT不兼容。下面是一些代碼重現效果(改變useShellToolbar
在Mac上的情況之間切換):
// taken from SWT Snippet47
package org.eclipse.swt.snippets;
import org.eclipse.swt.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.widgets.*;
public class ToolbarRadioButtonGroupTest {
public static void main (String [] args) {
boolean useShellToolBar = true;
Display display = new Display();
Shell shell = new Shell (display);
Image image = new Image (display, 20, 20);
Color color = display.getSystemColor (SWT.COLOR_BLUE);
GC gc = new GC (image);
gc.setBackground (color);
gc.fillRectangle (image.getBounds());
gc.dispose();
Image image2 = new Image (display, 20, 20);
color = display.getSystemColor (SWT.COLOR_GREEN);
gc = new GC (image2);
gc.setBackground (color);
gc.fillRectangle (image2.getBounds());
gc.dispose();
ToolBar bar = null;
if (useShellToolBar){
bar = shell.getToolBar();
}else{
bar = new ToolBar (shell, SWT.BORDER | SWT.FLAT);
}
Rectangle clientArea = shell.getClientArea();
bar.setBounds (clientArea.x, clientArea.y, 200, 32);
int number = 3;
final ToolItem[] items = new ToolItem[number];
for (int i=0; i<number; i++) {
ToolItem item = new ToolItem (bar, SWT.RADIO);
item.setImage (image);
items[i] = item;
}
ToolItem sep = new ToolItem(bar, SWT.SEPARATOR);
ToolItem push = new ToolItem(bar, SWT.PUSH);
push.setImage(image2);
push.addListener(SWT.Selection, new Listener(){
@Override
public void handleEvent(Event event) {
for (ToolItem toolItem : items) {
toolItem.setSelection(false);
}
}
});
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
image.dispose();
image2.dispose();
display.dispose();
}
}
全部取消選擇?一次只能在按鈕組中選擇一個單選按鈕... –
如果您希望全部取消選中,您需要使用複選框或其他控件。 radiibuttons分組時將_always_具有固有選擇的按鈕。 – Brian
我是SWT的新手,但通過收音機項目迭代的toolItem.setSelection(false)似乎適用於我。請粘貼一些代碼。我正在使用Juno自帶的SWT版本。 – rgeorge