热门标签 | 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了呢?

推荐阅读
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社区 版权所有