2017-05-07 52 views
-2

我想在方法中传递一个JFrame作为参数, 是否有可能这样做?传递框架作为方法中的参数

这里就是我想:

private void mouseClickedButtonsActions(JLabel l, Class c){ 
    l.addMouseListener(new java.awt.event.MouseAdapter() { 
     @Override 
     public void mouseClicked(java.awt.event.MouseEvent evt) { 
      c ma = new c(); 
      ma.setVisible(true); 
      setVisible(false); 
     } 
    }); 
} 
+0

在这行你想通过JFrame的? – ItamarG3

+3

你想传递一个对象还是一个类? – granmirupa

+1

你的问题不清楚,因为@granmirupa注意上面,所以如果你告诉并显示更多的细节,它会有所帮助。作为一个方面说明,它看起来像你正在使用一个应用ActionListener的MouseListener。 –

回答

0

你不应该在这种情况下被发送类,如果你想了解更多关于发送类作为参数,检查了这一点Passing class as parameter

现在,因为你要传递的JFrame作为参数,可以简单的写methodName(JFrame frame),否则,如果你只是想做出新的JFrame你不需要通过它只是里面创建新的方法之一:

myMethod(){ 
    JFrame frame = new JFrame(); 
    // Do something with it 
} 

所以你可以看到,没有必要通过其他类来创建该类的对象。

在这里你可以看到例如如何传递的JFrame作为参数,作出新的JFrame:

public void jframe() { 

    JFrame frame = new JFrame("Frame 1"); 
    JButton btn = new JButton("Click Me"); 
    ActionListener al = new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      jframeAsParam(new JLabel("You added label to old JFrame"), frame); 
      //makeNewJFrame(new JLabel("You opened new JFrame")); 
     } 
    }; 
    btn.addActionListener(al); 
    JPanel panel = new JPanel(new GridLayout(2, 1)); 

    panel.add(btn); 
    frame.setContentPane(panel); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(300, 250); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
} 

public void jframeAsParam(JLabel lbl, JFrame frame) { 
    frame.getContentPane().add(lbl); 
    frame.setVisible(true); 
} 

public void makeNewJFrame(JLabel lbl) { 
    JFrame frame = new JFrame("Frame 2"); 
    JPanel panel = new JPanel(new BorderLayout()); 
    panel.add(lbl, BorderLayout.CENTER); 
    frame.setContentPane(panel);  
    frame.setSize(300, 250); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
} 

取消注释makeNewJFrame(new JLabel("You opened new JFrame"));看到打开新的JFrame是如何工作的。

0
c ma = new c(); 

首先类名称应该的:

  1. 开始用大写字母
  2. 要描述

我想通过一个JFrame作为参数的方法,是否有可能这样做?

没有必要通过框架,你可以使用如下代码访问当前帧的参数:

Component component = (Component)evt.getSource(); 
Window window = SwingUtilities.windowForComponent(component); 
window.setVisible(false);