gpt4 book ai didi

java - 如何为不同的单选按钮定义不同的行为——Java之SWT

转载 作者:行者123 更新时间:2023-11-30 09:12:01 24 4
gpt4 key购买 nike

考虑以下代码:

public class SWTTest {

public static void main(String[] args) {

Display display=new Display();
Shell shell=new Shell(display, SWT.DIALOG_TRIM);

Group group=new Group(shell, SWT.SHADOW_ETCHED_OUT);
group.setText("A group");

Button[] options=new Button[2];
options[0]=new Button(group, SWT.RADIO);
options[0].setText("Option 1");
options[0].setLocation(5, 20);
options[0].pack();

options[1]=new Button(group, SWT.RADIO);
options[1].setText("Option 2");
options[1].setLocation(5, 50);
options[1].pack();

options[0].addSelectionListener(new SelectionListener() {

@Override
public void widgetSelected(SelectionEvent e) {
System.out.println("Option 1 Selected");
}

@Override
public void widgetDefaultSelected(SelectionEvent e) {
// TODO Auto-generated method stub

}

});


group.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}

My intention is that whenever option 1 is selected, the widgetSelected(SelectionEvent e) method will be invoked, and only then, but the problem is that selecting option 2 调用widgetSelected(SelectionEvent e) 方法,即使我没有将选项 2 作为监听器提交,也没有实现 widgetSelected(SelectionEvent e) 方法。
那么这里发生了什么,我如何为不同的选项选择定义不同的行为?


编辑

哦……还有一件事……
如果我对实现 widgetDefaultSelected(SelectionEvent e) 方法不感兴趣怎么办?我应该就这样离开吗?

最佳答案

正如 Edward Thomson 在评论中提到的那样,SelectionEventButton 上触发 选择 及其取消选择

您的EventListener 应该检查Button 状态:

button.getSelection() // return true if the button is selected

我通常是这样做的:

Button button = new Button(parent , SWT.RADIO);
button.addSelectionListener(new SelectionAdapter(){
@override
public void widgetSelected(final SelectionEvent e){
super.widgetSelected();
if(button.getSelection()){
//do your processing
}
}
});

关于java - 如何为不同的单选按钮定义不同的行为——Java之SWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21836968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com