2017-05-07 57 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);