2016-07-26 13 views
0

Ich komme aus C++ nach Java und alles, was ich versuche, ist eine Methode schreiben. Ich verstehe nicht, warum ich bekomme: Methode 'SetFrame (String)' ist nicht identifiziert für den Typ 'BillUtility' Jede Hilfe wird geschätzt.Java-Methode nicht identifiziert für den Typ

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

Ihre "Methode" fehlt ein Rückgabetyp, und es ist kein "BillUtility" -Konstruktor. –

+2

'public void setFrame (String titel) {...' ist wahrscheinlich, was du meintest. – bradimus

+0

@bradimus Ja danke! – Ptheguy

Antwort

2

Sie müssen Ihrem Methodenkopf "static void" hinzufügen. Eine statische Methode ruft andere statische Methoden auf. Da main als statisch deklariert ist, muss setFrame ebenfalls verwendet werden. Sie deklarieren void, wenn die Methode keinen Wert zurückgeben soll.

1

Sie müssen einen Rückgabetyp angeben. In Ihrer Methode wäre es void. Ich denke, es gibt auch Rückgabetypen in C++, liege ich falsch?

1

Sie haben 2 Probleme hier:

Erste ist, dass Sie in der Methode Header einen Rückgabetyp fehlen.

Zweitens: ist, dass Sie mit Hauptmethode als lokale Methode umgehen, die Zugriff auf BillUtility-Klasse hat, aber es ist nicht.

Sie müssen ein Objekt aus der BillUtility-Klasse erstellen und es verwenden, rufen Sie die setFrame-Methode auf, oder legen Sie fest, dass der setFrame-Methodenkopf statisch ist.

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

Es gibt ein paar Probleme in Ihrem Code.

  1. Sie benötigen einen Rückgabetyp für Methode setFrame(). In diesem Fall wird es

    public void setFrame(String title) //set return type as void 
    
  2. sein Wenn Sie setFrame() aufrufen wollen, entweder Sie machen es static (was ich glaube nicht, das ist eine geeignete Situation) oder erstellen Sie eine Instanz zuerst, dann rufen setFrame() aus die Instanz:

    BillUtility bu = new BillUtility(); //create an object of BillItility 
    bu.setFrame("your title");   //invoke setFrame() from object 
    
  3. Es wird empfohlen, setVisible(true) als letzte Anweisung aufzurufen, wenn Ihre JFrame implementieren.

Sie können auch wollen frame.pack() aufzurufen und die Dimension Ihrer JPanel gesetzt (die in die JFrame geht) anstatt manuell die Größe für Ihre JFrame festlegen.

+0

@PedZad Werfen Sie einen Blick auf meine Antwort. – user3437460

Verwandte Themen