从匿名 Java 子类访问"this"



我正在尝试修改JToolBar的行为,以允许它停靠到多个JPanel。 作为本练习的一部分,我需要重写我尝试使用与原始定义非常相似的匿名类执行的方法getDockingConstraint

问题是原始实现引用this几次,我认为这很好,但我一定错过了一些东西,因为 IDE 报告匿名类看不到this.dockingSensitivity

这里有一个简单的更改,还是我应该跳过这种方法,只创建一个完整的BasicToolBarUI子类? 或者也许有更好的方法来完全修改 JToolBar 的对接功能?

public MultiDockToolBar() {
        setUI(new BasicToolBarUI(){
            @Override
            private String getDockingConstraint(Component var1, Point var2) {
                if(var2 == null) {
                    return this.constraintBeforeFloating;
                } else {
                    if(var1.contains(var2)) {
                        // Breaks here when using this.:
                        this.dockingSensitivity = this.toolBar.getOrientation() == 0?this.toolBar.getSize().height:this.toolBar.getSize().width;
                        if(var2.y < this.dockingSensitivity && !this.isBlocked(var1, "North")) { 
                            return "North";
                        }
                        // Check East
                        // Check West
                        // Check South
                    }
                    return null;
                }
            }
        });
    }

dockingSensitivity是类BasicToolBarUI内部的私有字段。您将无法直接更改此设置。如果您仍然想编辑并面对潜在的后果,则可以使用 Java 反射库。

相关内容

  • 没有找到相关文章

最新更新