2014-04-16 50 views
-1

我正在使用swing來製作帶有JFrame的Java項目。我正試圖調用非靜態方法build(),它使用它的組件構建JFrame。但是,構建不能是靜態的,因爲我使用getClass(),它需要一個非靜態方法。我不能讓我的主要非靜態,所以我怎麼能稱之爲構建?這裏是我的代碼:如何從靜態方法調用非靜態方法?

public class MainUI { 
public static void main(String[] args) { 
    build(); // Calls build method 
} 
private void build() { 
    // Builds JFrame 
    JFrame frame = new JFrame(); 
    JPanel base = new JPanel(); 
    JLabel background = new JLabel(); 
    frame.setVisible(true); 
    frame.setTitle("Space Age"); 
    frame.setSize(640,480); 
    frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
    frame.setAutoRequestFocus(false); 
    frame.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); 
    frame.setLocationRelativeTo(null); 
    base.setSize(640,480); 
    base.setAlignmentX(0.0F); 
    base.setAlignmentY(0.0F); 
    base.setBackground(new java.awt.Color(255,255,255)); 
    background.setSize(640,480); 
    background.setAlignmentX(0.0F); 
    background.setAlignmentY(0.0F); 
    background.setIcon(new javax.swing.ImageIcon(getClass().getResource("/path/image.png"))); 
    frame.add(base); 
    frame.add(background); 
} 
// Variable declarations 
private JFrame frame; 
private JPanel base; 
private JLabel background; 

}

+3

通過創建其持有者類的新實例'new MainUI()。build();' –

+0

謝謝!有效。 –

回答

3

只需要創建類的實例:

MainUI mainUI = new MainUI(); 
mainUI.build(); 

不能調用非靜態方法無類的一個實例。