我如何知道哪些SWITCH功能是可覆盖的,哪些不是#39; t?

时间:2015-01-26 21:13:08

标签: java swt

我一直在询问有关自定义SWT功能的问题(请参阅this question I asked last week)。我没有为我要覆盖的每个功能提出新问题,而是我可以找到自己找的任何地方吗?我很乐意看到代码,文档或任何可以指向正确方向的东西。

1 个答案:

答案 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)
    }
}

希望有所帮助。