2016-07-26 57 views
0

我來自C++到Java,所有我試圖做的是寫一個方法。我不明白爲什麼我越來越︰方法'setFrame(字符串)'是未識別的類型'BillUtility' 任何幫助表示讚賞。未知類型的Java方法

import javax.swing.*; 

public class BillUtility 
{ 

public static void main(String argc[]) 
{ 
    setFrame("Bill Utility"); 
} 

public setFrame(String title) 
{ 
    JFrame frame = new JFrame(); 
    frame.setVisible(true); 
    frame.setTitle(title); 
    frame.setSize(800, 1000); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

} 
+0

您的「方法」缺少返回類型,它不是'BillUtility'構造函數。 –

+2

'公共無效setFrame(字符串標題){...'可能是你的意思。 – bradimus

+0

@bradimus是的,謝謝! – Ptheguy

回答

2

您需要在方法頭中添加「static void」。靜態方法調用其他靜態方法,因此,由於main被聲明爲靜態方法,所以setFrame也必須是一樣的。如果方法不返回值,則聲明爲void。

1

您需要指定返回類型。在你的方法中,它將是void。 我覺得C++也有返回類型,我錯了嗎?

1

你有2個問題在這裏:

首先是你缺少的方法頭返回類型。

第二:是你處理main方法作爲可以訪問BillUtility類的本地方法,但事實並非如此。

您需要從BillUtility類創建一個對象,並使用它調用setFrame方法或將setFrame方法頭設置爲靜態。

import javax.swing.*; 

public class BillUtility 
{ 

    public static void main(String argc[]) 
    { 
     BillUtility util = new BillUtility(); 
     util.setFrame("Bill Utility"); 
    } 

    public void setFrame(String title) 
    { 
     JFrame frame = new JFrame(); 
     frame.setVisible(true); 
     frame.setTitle(title); 
     frame.setSize(800, 1000); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

} 
0

你的代碼有幾個問題。

  1. 您需要方法setFrame()的返回類型。在這種情況下,這將是

    public void setFrame(String title) //set return type as void 
    
  2. 如果你想調用setFrame(),要麼你把它static(我不認爲這是一個合適的情況下),或者你先創建一個實例,然後從調用setFrame()實例:

    BillUtility bu = new BillUtility(); //create an object of BillItility 
    bu.setFrame("your title");   //invoke setFrame() from object 
    
  3. 建議實現您的JFrame何時調用setVisible(true)作爲最後一個發言。

您可能還需要調用frame.pack()和設置您的JPanel(其中進入你的JFrame)的尺寸,而不是手動設置大小爲您的JFrame。

+0

@PedZad看看我的答案。 – user3437460