你不应该在这种情况下被发送类,如果你想了解更多关于发送类作为参数,检查了这一点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是如何工作的。
在这行你想通过JFrame的? – ItamarG3
你想传递一个对象还是一个类? – granmirupa
你的问题不清楚,因为@granmirupa注意上面,所以如果你告诉并显示更多的细节,它会有所帮助。作为一个方面说明,它看起来像你正在使用一个应用ActionListener的MouseListener。 –