问题描述
我创建了一个简单的SWT应用程序,其中包含两个List小部件。
左侧是一些可供选择的值。 双击其中之一时,它将添加到右侧列表中。
在Windows上,这可以正常工作。 但是当我在Mac上试用时,发现右侧列表仅在应用程序散焦后才会更新。
我不知道为什么会这样吗?
import java.util.stream.IntStream;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;
public class ListWidgetRefreshTest {
public static void main(final String[] args) {
new Dialog((Shell) null) {
@Override
protected Control createDialogArea(final Composite parent) {
final Composite composite = (Composite) super.createDialogArea(parent);
// Create layout
// Two column layout
composite.setLayout(new FillLayout(SWT.VERTICAL));
final Composite container = new Composite(parent,SWT.FILL);
container.setLayout(new GridLayout(2,false));
final Composite leftRightPanel = new Composite(container,SWT.FILL);
leftRightPanel.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,2,1));
final GridLayout layout = new GridLayout(2,true);
layout.marginHeight = 0;
layout.marginWidth = 0;
leftRightPanel.setLayout(layout);
// Add items
// Left side
Composite panel = new Composite(leftRightPanel,SWT.FILL);
panel.setLayout(new GridLayout(2,false));
final List leftList = new List(panel,SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
IntStream.rangeClosed(1,3).mapToObj(String::valueOf).forEach(leftList::add);
// Right side
panel = new Composite(leftRightPanel,false));
final List rightList = new List(panel,SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
leftList.addMouseListener(new MouseAdapter() {
@Override
public void mouseDoubleClick(final MouseEvent e) {
for (final String selection : leftList.getSelection()) {
rightList.add(selection);
}
}
});
return composite;
}
}.open();
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)