LPrincesay 2019-11-18 22:22 采纳率: 0%
浏览 309

构造器传参错误?this.this$0=this$0?

求助求助!!

编译显示:无法将 java.awt.event.WindowAdapter中的构造器WindowAdapter应用到给定类型;实际参数列表与形式参数列表长度不同;
this.this$0=this$0;是什么意思?这个编译显示:找不到符号;

private void jbInit() throws Exception {
        this.setLayout((LayoutManager)null);
        this.view.setBackground(Color.white);
        this.view.setBounds(new Rectangle(6, 26, 537, 316));
        this.setBackground(Color.gray);
        this.addWindowListener( new WindowAdapter((CurveShow)this) {

            {
                this.this$0 =this$0;
            }

            public void windowOpened(WindowEvent e) {
                this.this$0.this_windowOpened(e);
            }

            public void windowClosing(WindowEvent e) {
                this.this$0.this_windowClosing(e);
            }
        });
        this.choicelen.setBounds(new Rectangle(69, 355, 94, 21));
        this.choicelen.addItemListener(new ItemListener() {
            {
                this.this$0 = this$0;
            }

            public void itemStateChanged(ItemEvent e) {
                this.this$0.choicelen_itemStateChanged(e);
            }
        });

求助

  • 写回答

1条回答 默认 最新

  • 落鱼科技 2022年度博客新星评选TOP 6 2024-03-04 00:17
    关注

    首先,您不需要在匿名内部类的初始化块中设置this.this$0 = this$0;,因为this$0已经是对外部类的引用。您应该直接使用this$0来调用外部类的方法。

    以下是修改后的代码示例:

    
    private void jbInit() throws Exception {
        this.setLayout((LayoutManager)null);
        this.view.setBackground(Color.white);
        this.view.setBounds(new Rectangle(6, 26, 537, 316));
        this.setBackground(Color.gray);
        
        // 添加窗口监听器
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowOpened(WindowEvent e) {
                // 直接使用this$0调用外部类的方法
                this$0.this_windowOpened(e);
            }
            
            @Override
            public void windowClosing(WindowEvent e) {
                // 同上
                this$0.this_windowClosing(e);
            }
        });
    
        // 添加项目监听器
        this.choicelen.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                // 同上
                this$0.choicelen_itemStateChanged(e);
            }
        });
    }
    请注意,我已经移除了this.this$0 = this$0;这一行,并且确保在匿名内部类的覆盖方法中直接使用this$0来调用外部类的方法。这样,编译器就能正确地找到外部类的符号,并且不会再报错。
    
    如果您的外部类(在这个例子中是CurveShow)有this_windowOpened、this_windowClosing和choicelen_itemStateChanged这些方法,那么上面的代码应该可以正常编译和运行。如果这些方法不存在,您需要在外部类中定义它们。首先,您不需要在匿名内部类的初始化块中设置this.this$0 = this$0;,因为this$0已经是对外部类的引用。您应该直接使用this$0来调用外部类的方法。
    
    以下是修改后的代码示例:
    
    private void jbInit() throws Exception {
        this.setLayout((LayoutManager)null);
        this.view.setBackground(Color.white);
        this.view.setBounds(new Rectangle(6, 26, 537, 316));
        this.setBackground(Color.gray);
        
        // 添加窗口监听器
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowOpened(WindowEvent e) {
                // 直接使用this$0调用外部类的方法
                this$0.this_windowOpened(e);
            }
            
            @Override
            public void windowClosing(WindowEvent e) {
                // 同上
                this$0.this_windowClosing(e);
            }
        });
    
        // 添加项目监听器
        this.choicelen.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                // 同上
                this$0.choicelen_itemStateChanged(e);
            }
        });
    }
    
    

    请注意,我已经移除了this.this$0 = this$0;这一行,并且确保在匿名内部类的覆盖方法中直接使用this$0来调用外部类的方法。这样,编译器就能正确地找到外部类的符号,并且不会再报错。

    如果您的外部类(在这个例子中是CurveShow)有this_windowOpened、this_windowClosing和choicelen_itemStateChanged这些方法,那么上面的代码应该可以正常编译和运行。如果这些方法不存在,您需要在外部类中定义它们。

    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵