第一个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.javapackage 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) 这样的错误
请高手给我解决下~~~

解决方案 »

  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了呢?