从匿名 Java 子类访问 "this"

Accessing "this" from an anonymous Java subclass

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

问题是原始实现多次引用了 this,我认为这没问题,但我一定是遗漏了一些东西,因为 IDE 报告说 this.dockingSensitivity 不可见匿名 class.

这里有一个简单的改变,还是我应该跳过这个方法而只创建一个 BasicToolBarUI 的完整子 class?或者也许有更好的方法来完全修改 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;
                }
            }
        });
    }

dockingSensitivityBasicToolBarUI class 内的私有字段。您将无法直接更改它。如果您仍想编辑并面对潜在的后果,您可以使用 Java 反射库。