热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java项目中两个文件互相调用时出现函数错误,请求专业解决方案

在Java项目中,当两个文件进行互相调用时出现了函数错误。具体问题出现在`MainFrame.java`文件中,该文件位于`cn.javass.bookmgr`包下,并且导入了`java.awt.BorderLayout`和`java.awt.Event`等相关类。为了确保项目的正常运行,请求提供专业的解决方案,以解决函数调用中的错误。建议从类路径、依赖关系和方法签名等方面入手,进行全面排查和调试。
第一个MainFrame.java文件
package cn.javass.bookmgr;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.GridBagLayout;
import javax.swing.JLabel;

import cn.javass.bookmgr.user.ui.panels.ListPanel;
import cn.javass.bookmgr.user.ui.panels.LoginPanel;
import cn.javass.bookmgr.util.uiutil.ChangePanel;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class MainFrame extends JFrame 
{

private JPanel contentPane;


public static void main(String[] args) 
{
EventQueue.invokeLater(new Runnable() 
{
public void run() 
{
try 
{

//添加登录界面
    MainFrame frame = new MainFrame();
frame.getContentPane().add(new LoginPanel());
frame.setVisible(true); 





catch (Exception e) 
{
e.printStackTrace();
}
}
});


/**
 * Create the frame.
 */
public MainFrame() 
{   
{
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
{
JMenu mnFile = new JMenu("File");
menuBar.add(mnFile);
{
JMenuItem mntmExit = new JMenuItem("Exit");
mnFile.add(mntmExit);
}
{
JMenuItem mntmLogin = new JMenuItem("Login");
mnFile.add(mntmLogin);
}
}
{
JMenu menu = new JMenu("\u7528\u6237\u7BA1\u7406");
menuBar.add(menu);
{
JMenuItem menuItem = new JMenuItem("\u6CE8\u518C\u7528\u6237");
menu.add(menuItem);
}
{
JMenuItem menuItem = new JMenuItem("\u4FEE\u6539\u7528\u6237");
menu.add(menuItem);
}
{
JMenuItem menuItem = new JMenuItem("\u5220\u9664\u7528\u6237");
menu.add(menuItem);
}
{
JMenuItem menuItem = new JMenuItem("\u67E5\u8BE2\u7528\u6237");
menu.add(menuItem);
}
{
JMenuItem menuItem = new JMenuItem("\u7528\u6237\u5217\u8868");
menuItem.addActionListener(new ActionListener() 
{
public void actionPerformed(ActionEvent e) 
{   
ListPanel lp=new ListPanel();
                   ChangePanel.changePanel(this, lp);
}
});



menu.add(menuItem);
}
}
{
JMenu menu = new JMenu("\u56FE\u4E66\u7BA1\u7406");
menuBar.add(menu);
{
JMenuItem menuItem = new JMenuItem("\u56FE\u4E66\u5217\u8868");
menu.add(menuItem);
}
{
JMenuItem menuItem = new JMenuItem("\u6DFB\u52A0\u56FE\u4E66");
menu.add(menuItem);
}
{
JMenuItem menuItem = new JMenuItem("\u5220\u9664\u56FE\u4E66");
menu.add(menuItem);
}
{
JMenuItem menuItem = new JMenuItem("\u4FEE\u6539\u56FE\u4E66");
menu.add(menuItem);
}
{
JMenuItem menuItem = new JMenuItem("\u67E5\u8BE2\u56FE\u4E66");
menu.add(menuItem);
}
}
{
JMenu menu = new JMenu("\u8FDB\u8D27\u7BA1\u7406");
menuBar.add(menu);
{
JMenuItem menuItem = new JMenuItem("\u586B\u5199\u8FDB\u8D27\u5355");
menu.add(menuItem);
}
{
JMenuItem menuItem = new JMenuItem("\u67E5\u8BE2\u8FDB\u8D27\u5355");
menu.add(menuItem);
}
}
{
JMenu menu = new JMenu("\u9500\u552E\u7BA1\u7406");
menuBar.add(menu);
{
JMenuItem menuItem = new JMenuItem("\u586B\u5199\u9500\u552E\u5355");
menu.add(menuItem);
}
{
JMenuItem menuItem = new JMenuItem("\u67E5\u8BE2\u9500\u552E\u5355");
menu.add(menuItem);
}
}
{
JMenu menu = new JMenu("\u5E93\u5B58\u7BA1\u7406");
menuBar.add(menu);
{
JMenuItem menuItem = new JMenuItem("\u67E5\u770B\u5E93\u5B58");
menu.add(menuItem);
}
}
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 600, 450);
contentPane = new JPanel();
contentPane.setLayout(new BorderLayout(0, 0));
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
   }

}


标有红处的地方有调用错误。

第二个文件ChangePanel.java

package cn.javass.bookmgr.util.uiutil;
import java.awt.event.ActionListener;

import cn.javass.bookmgr.MainFrame;
import cn.javass.bookmgr.user.ui.panels.AddPanel;
import cn.javass.bookmgr.user.ui.panels.ListPanel;

import javax.swing.JPanel;
public class ChangePanel 
{ public ChangePanel()
  {

  }
  public static void main(String args[])
  {
  ChangePanel changepanel=new ChangePanel();
  }
  public static void changePanel(MainFrame mf,JPanel toPanel)
  {
  mf.getContentPane().removeAll();
  //AddPanel ap=new AddPanel();
  //mf.getContentPane().add(ap);
  mf.getContentPane().add(toPanel);
  mf.getContentPane().validate();
  
  }

}


以上有两个文件 在第一个文件标有红处有错误,在ECLIPSE中出现The method changePanel(MainFrame, JPanel) in the type ChangePanel is not applicable for the arguments (new ActionListener(){}, ListPanel) 这样的错误
请高手给我解决下~~~

3 个解决方案

#1


错误提示已经说的非常清楚了.
在ChangPanel这个类中你定义的changePanel的两个参数是MainFrame和Jpanel类型.

调用的时候你给的两个参数的类型是ActionListener和ListPanel类型.

#2


能不能帮我改下啊,
目的是在MainFrame.java中,
在ChangePanel.changePanel(this, lp);中,this实际上代表的是frame这个对象,但是如果把this改为frame,还是有错误,请帮忙改下 谢谢!! 

#3


menuItem.addActionListener(new ActionListener() 

public void actionPerformed(ActionEvent e) 
{  
ListPanel lp=new ListPanel(); 
                  ChangePanel.changePanel(this, lp); 

}); 

ChangePanel.changePanel(this, lp);
 的第一个参数,我想你是想用菜单所在的那个MainFrame吧.
可以用e.getSource()得菜单项,要强转一下,e.getSource().getParent()可以得么菜单,e.getSource().getParent().getParent(),是不是就可以得到MainFrame了呢?

推荐阅读
  • 深入解析Java多线程与并发库的应用:空中网实习生面试题详解
    本文详细探讨了Java多线程与并发库的高级应用,结合空中网在挑选实习生时的面试题目,深入分析了相关技术要点和实现细节。文章通过具体的代码示例展示了如何使用Semaphore和SynchronousQueue来管理线程同步和任务调度。 ... [详细]
  • Java 实现二维极点算法
    本文介绍了一种使用 Java 编程语言实现的二维极点算法。该算法用于从一组二维坐标中筛选出极点,适用于需要处理几何图形和空间数据的应用场景。文章不仅详细解释了算法的工作原理,还提供了完整的代码示例。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 本文探讨了在Java中如何正确地将多个不同的数组插入到ArrayList中,避免所有数组在插入后变得相同的问题。我们将分析代码中的问题,并提供解决方案。 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 本文介绍 Java 中如何使用 Year 类的 atMonth 方法将年份和月份组合成 YearMonth 对象,并提供代码示例。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • ------------------------------————————————————————————————1.定义一个类,实现与被增强对象相同的接口2.在类中定义一个对象,记住被增强 ... [详细]
  • PHP 实现多级树形结构:构建无限层级分类系统
    在众多管理系统中,如菜单、分类和部门等模块,通常需要处理层级结构。为了高效管理和展示这些层级数据,本文将介绍如何使用 PHP 实现多级树形结构,并提供代码示例以帮助开发者轻松实现无限分级。 ... [详细]
  • LeetCode 690:计算员工的重要性评分
    在解决LeetCode第690题时,我记录了详细的解题思路和方法。该问题要求根据员工的ID计算其重要性评分,包括直接和间接下属的重要性。本文将深入探讨如何使用哈希表(Map)来高效地实现这一目标。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • Qt QTableView 内嵌控件的实现方法
    本文详细介绍了在 Qt QTableView 中嵌入控件的多种方法,包括使用 QItemDelegate、setIndexWidget 和 setIndexWidget 结合布局管理器。每种方法都有其适用场景和优缺点。 ... [详细]
author-avatar
手机用户2602922607
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有