4
我一直在使用SWT並發現問題。SWT調整大小錯誤
選擇和取消選中複選框並最大化窗口時,即使它爲空,也會導致設置第一個按鈕的圖標。此外,按鈕上文本的佈局可能會不正確。
重現該錯誤:
- 選擇複選框1
- 取消複選框1
- 選擇複選框3
- 最大化窗口
的複選框1的圖標爲空(空),但它有十字圖標。
public static void main(String[] args) {
final Display d = new Display();
Shell s = new Shell(d);
s.setLayout(new GridLayout(2, false));
s.setSize(500, 500);
new Label(s, SWT.NONE).setText("C");
final Button c = new Button(s, SWT.CHECK);
new Label(s, SWT.NONE).setText("L1");
final Button b = new Button(s, SWT.PUSH | SWT.FLAT);
b.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
b.setText("Button 1");
b.setEnabled(false);
new Label(s, SWT.NONE).setText("C2");
final Button c2 = new Button(s, SWT.CHECK);
new Label(s, SWT.NONE).setText("L2");
final Button b2 = new Button(s, SWT.PUSH | SWT.FLAT);
b2.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
b2.setImage(null);
b2.setText("Button 2");
b2.setEnabled(false);
new Label(s, SWT.NONE).setText("C3");
final Button c3 = new Button(s, SWT.CHECK);
new Label(s, SWT.NONE).setText("L3");
final Button b3 = new Button(s, SWT.PUSH | SWT.FLAT);
b3.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
b3.setText("Button 3");
b3.setEnabled(false);
c.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (!b.isEnabled()) {
b.setImage(d.getSystemImage(SWT.ICON_ERROR));
b.setEnabled(true);
} else {
b.setImage(null);
b.setEnabled(false);
}
}
});
c2.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (!b2.isEnabled()) {
b2.setImage(d.getSystemImage(SWT.ICON_ERROR));
b2.setEnabled(true);
} else {
b2.setImage(null);
b2.setEnabled(false);
}
}
});
c3.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (!b3.isEnabled()) {
b3.setImage(d.getSystemImage(SWT.ICON_ERROR));
b3.setEnabled(true);
} else {
b3.setImage(null);
b3.setEnabled(false);
}
}
});
s.open();
while (!s.isDisposed()) {
if (!d.readAndDispatch())
d.sleep();
}
d.dispose();
}
在MacOS 10.12.6不可重複使用SWT來自Eclipse Oxygen。 –
我在Windows 7上使用Eclipse 3.4。 – Michael
Eclipse 3.4是古老的,很可能從那時起它已經被修復了。嘗試使用[這裏]的SWT jar(http://download.eclipse.org/eclipse/downloads/drops4/R-4.7-201706120950/) –