我一直在询问有关自定义SWT功能的问题(请参阅this question I asked last week)。我没有为我要覆盖的每个功能提出新问题,而是我可以找到自己找的任何地方吗?我很乐意看到代码,文档或任何可以指向正确方向的东西。
答案 0 :(得分:0)
大多数SWT小部件和功能的java文档都说明了一个类不是用于子类化的。因此,如果您想扩展某些内容或更改不打算进行子类化的类的行为,我建议例如使用方法将Widget包装在您自己的类中,以使用给定的功能模仿您的预期行为。
例如,SWT Combo的java文档说:
重要提示:此类不旨在进行子类化。
所以我写了我自己的包装类:
public class VftCombo {
Combo combo;
public VftCombo(Composite parent, int style) {
this.combo = new Combo(parent, style);
disableKeyboardDropdownNavigation();
}
private void disableKeyboardDropdownNavigation() {
this.combo.addKeyListener(new KeyListener() {
@Override
public void keyReleased(KeyEvent e) {
if (e.keyCode == SWT.ARROW_DOWN || e.keyCode == SWT.ARROW_UP) {
e.doit = false;
}
}
@Override
public void keyPressed(KeyEvent e) {
if (e.keyCode == SWT.ARROW_DOWN || e.keyCode == SWT.ARROW_UP) {
e.doit = false;
}
}
});
}
public Combo getWidget() {
return this.combo;
}
public void setItems(List<String> items) {
// instead of using org.eclipse.swt.widgets.combo.setItems(String[] items)
}
}
希望有所帮助。