你不應該在這種情況下被髮送類,如果你想了解更多關於發送類作爲參數,檢查了這一點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。 –