将frame作为参数传递给方法

时间:2017-05-07 10:50:16

标签: java swing

我想在方法中传递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);
        }
    });
}

1 个答案:

答案 0 :(得分:0)

在这种情况下你不应该发送Class,如果你想了解更多关于发送类作为参数的信息,请查看Passing class as parameter

现在,因为您想要将JFrame作为参数传递,您只需编写methodName(JFrame frame),否则如果您只想创建新的JFrame,则不需要传递它,只需在方法内创建一个新的: / p>

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

因为你可以看到没有必要在其他类中传递一个Class来创建该类的对象。

在这里,您可以看到如何将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。