gpt4 book ai didi

java - 当选择 TableItem 时,带有 SWT.CHECK 的 Eclipse Table 小部件会触发两个事件

转载 作者:行者123 更新时间:2023-12-01 06:20:42 25 4
gpt4 key购买 nike

我正在制作一个 Eclipse (3.6.2) CDT (7.0.2) 插件,它使用我自己的向导页面(扩展 MBSCustomPage)。此向导页面显示一个表,其中填充了一些表项,可以通过单击它们来选中或取消选中这些表项(像往常一样)。 问题是,当选中(或取消选中)TableItem 复选框时,我总是收到两个事件!。在收到的第一个事件中,即使首先检查了 TableItem,我也有 (SelectedEvent)e.detail == SWT.CHECK,而在第二个事件中,(SelectedEvent)e.detail == 0!。所以我无法知道 TableItem 是否真的被检查过。这是我的代码(某种程度上):

final Table table = new Table( composite, SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION | SWT.CHECK );
table.setHeaderVisible(true);
table.setLinesVisible(false);

(...)

table.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
CheckThatOnlyOneItemCanBeCheckedAtTime(e.item);
//If someone check on me, save the item data value in a "container"
if( e.detail == SWT.CHECK ) {
MBSCustomPageManager.addPageProperty(PAGE_ID, "SDK_Path", ((ISdk)((TableItem)e.item).getData()).getPath() );
} else { //Otherwise, unset the saved value
MBSCustomPageManager.addPageProperty(PAGE_ID, "SDK_Path", "" );
}
}
});

当我单击 TableItem 的复选框时,为什么 widgetSelected() 被调用两次?我测试了即使 widgetSelected() 方法中没有代码,事件也会被触发。我没有找到任何东西谷歌搜索或在 Eclipse Bugzilla 数据库中查找...对我来说真的很奇怪,但我不是一个经验丰富的 Eclipse 插件编码器(甚至不是 Java):)

谢谢!

最佳答案

table.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event arg0) {
String string = arg0.detail == SWT.CHECK ? "Checked" : "Selected";
if (arg0.detail == SWT.CHECK) {
System.out.println(arg0.item + " " + string+ ":" +
((Table)arg0.widget).getSelection()[0].getChecked());
}
else {
System.out.println(arg0.item + " " + string);
}
}
});

关于java - 当选择 TableItem 时,带有 SWT.CHECK 的 Eclipse Table 小部件会触发两个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7760778/

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