如何在Java中将JFrame作为函数参数?

时间:2011-09-25 17:35:49

标签: java jframe

我想创建一个不同的函数来为java应用程序制作菜单栏。

在动作侦听器和frame.pack()语句中的菜单栏函数frame.setJMenuBar中。

那么我们如何将frame作为对象传递给子类作为参数? 我在

中遇到错误
imports..

public class sjava {
  public static void CreateAndRunGUI() {
    final JFrame frame = new JFrame("MyFrame");

    code..

    MakeMenuBar(frame);
    frame.pack();
    frame.setVisible(true);
  }

  public static void MakeMenuBar(Object frame) {
    JMenuBar menubar = new JMenuBar();
    menubar.setBackground(new Color(180,160,130));
    menubar.setOpaque(true);
    menubar.setPreferredSize(new Dimension(800,20));
    frame.setJMenuBar(menubar);
    JMenu menu1 = new JMenu("menu1");

    code..

    mitem1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent a) {
        code..
        SwingUtilities.updateComponentTreeUI(frame);
        frame.pack();
      }
    });
    code..
    mitem2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent a) {
        code..
        SwingUtilities.updateComponentTreeUI(frame);
        frame.pack();
      }
    });
}
public static void main(String[] args) {
  javax.swing.SwingUtilities.invokeLater(new Runnable() {
    public void run() {
      CreateAndRunGUI();
    }
  });
}

可以使用makemenubar函数而不使用frame作为参数吗?

1 个答案:

答案 0 :(得分:1)

你必须更换

public static void MakeMenuBar(Object frame) {...}

public static void MakeMenuBar(JFrame frame) {...}

否则无法访问类JFrame的方法。