Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何知道哪些SWT功能是可覆盖的,哪些是';T_Java_Swt - Fatal编程技术网

Java 我如何知道哪些SWT功能是可覆盖的,哪些是';T

Java 我如何知道哪些SWT功能是可覆盖的,哪些是';T,java,swt,Java,Swt,我一直在问有关定制SWT特性的问题(请参阅)。与其为我想要覆盖的每一个特性都提出一个新问题,还有什么地方可以让我自己找到它吗?我乐于阅读代码、文档,或者任何可以为我指明正确方向的东西。大多数SWT小部件和功能的java文档都说明了类是否不打算被子类化。因此,如果您想要扩展某些内容或更改一个不打算被子类化的类的行为,我建议您在自己的类中使用方法包装小部件,以模仿您打算使用给定功能的行为 例如,SWT Combo的java文档说明: 重要提示:该类不是子类 因此,我编写了我自己的包装器类: publ

我一直在问有关定制SWT特性的问题(请参阅)。与其为我想要覆盖的每一个特性都提出一个新问题,还有什么地方可以让我自己找到它吗?我乐于阅读代码、文档,或者任何可以为我指明正确方向的东西。

大多数SWT小部件和功能的java文档都说明了类是否不打算被子类化。因此,如果您想要扩展某些内容或更改一个不打算被子类化的类的行为,我建议您在自己的类中使用方法包装小部件,以模仿您打算使用给定功能的行为

例如,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)
    }
}
公共类VftCombo{
组合组合;
公共VftCombo(复合父级,int样式){
this.combo=新组合(父项,样式);
禁用键盘下拉导航();
}
private void disableKeyboardDropdownNavigation(){
this.combo.addKeyListener(newKeyListener()){
@凌驾
公共无效密钥已释放(密钥事件e){
if(e.keyCode==SWT.ARROW|u DOWN | e.keyCode==SWT.ARROW_UP){
e、 doit=false;
}
}
@凌驾
按下公共无效键(按键事件e){
if(e.keyCode==SWT.ARROW|u DOWN | e.keyCode==SWT.ARROW_UP){
e、 doit=false;
}
}
});
}
公共组合getWidget(){
返回这个.combo;
}
公共无效集合项(列表项){
//而不是使用org.eclipse.swt.widgets.combo.setItems(字符串[]项)
}
}

希望有帮助。

SWT源代码作为Eclipse SDK的一部分随时可用。但是,由于它有很多本机方法调用,并且对于每个平台都完全不同,因此不容易阅读。因此,除了源代码之外,没有其他地方可以查看?由于源代码很难阅读,我一直在问关于每个特性的问题?如果你发现自己想要经常覆盖SWT特性,那么SWT可能不是适合你用例的UI工具包。SWT是操作系统UI设施顶部的一个薄层。为了便于移植,它通常实现所有受支持平台的最小公分母。在提问之前,你可能想看看,或者更像是定制SWT特性。就像我想改变箭头在排序表中的位置一样,去掉排序时的灰色背景,并为表创建交替的行背景。所有这些问题的答案都是“这是由操作系统控制的,你不能改变它”。这让我想知道我可以在SWT中定制什么。