kostenloser Webspace werbefrei: lima-city


java.lang.NoSuchMethodError

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    n**********4

    Also ich lerne jetzt schon seit geraumer Zeit Java mit so einem Buch, in dem z.B. Codebeispiele stehen.
    In dem Kapitel in dem ich grad bin geht um Zeichen-Panels und da war folgendes Codebeispiel dabei:


    import java.awt.*;
    import javax.swing.*;

    class MeinZeichenPanel extends JPanel {

    public void paintComponent(Graphics g) {

    g.setColor(Color.orange);

    g.fillRect(20, 50, 100, 100);

    }

    }


    Doch als ich das Programm abgeschrieben und mit meinem Editor(\"Ecplipse\") ausgeführt habe, kam plötzlich eine Meldung:\"Fatal exception occured. Programm will exit\" und in der Ausgabeleiste hat mir das Programm \"java.lang.NoSuchMethodError: main\" angezeigt.

    Meine Frage ist, ob es sein könnte, dass ich den Code falsch abgeschrieben hab(ich habs aber 1000-mal nachgeprüft), oder ob der Fehler an was anderem liegt.



    PS.: Die Antwort bitte, wenn es möglich wäre, für einen Anfänger(also für mich) verständlich schreiben! Danke!
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. k**********k

    Ist das dein ganzer Quelltext?


    wenn ja dann fehlt dir nämlich ne Main class, und das sagt glaube ich auch die Fehlermeldung.

    mfg Ketchup
  4. Autor dieses Themas

    n**********4

    Eigentlich schon! So stehts auf jeden fall in meinem Buch!

    Und was soll ich dann in die Main-Methode reinstecken? Die paintComponent()-Methode darf/kann ja nur(meines Wissens) vom System selber und nicht vom Benutzer aufgerufen werden.
  5. k**********k

    Du solltest in der Mainmethode dein Fenster konstruieren.

    public static void main(String[] args) {
    MeinZeichenPanel frame = new MeinZeichenPanel();
    frame.setLocation(100, 100);
    frame.setVisible(true);
    }

    EDIT:

    Und das sollte dann meineswissens noch so aussehen:

    import java.awt.*;
    import javax.swing.*;
    
    class MeinZeichenPanel extends JPanel {
    
    public void paintComponent(Graphics g) {
    
    g.setColor(Color.orange);
    
    g.fillRect(20, 50, 100, 100);
    
    }
    
     public static void main(String[] args) {
        MeinZeichenPanel frame = new  MeinZeichenPanel();
        frame.setLocation(100, 100);
        frame.setVisible(true);
     }
    
    }


    Beitrag geändert: 20.9.2007 19:58:06 von ketchupfleck
  6. Autor dieses Themas

    n**********4

    Aber wenn ich das jetzt ausführe passiert irgendwie garnichts. :confused::confused::confused::confused::confused::confused:

    import java.awt.*;
    import javax.swing.*;

    class MeinZeichenPanel extends JPanel {

    public void paintComponent(Graphics g) {

    g.setColor(Color.orange);

    g.fillRect(20, 50, 100, 100);

    }

    public static void main(String[] args) {
    MeinZeichenPanel frame = new MeinZeichenPanel();
    frame.setLocation(100, 100);
    frame.setVisible(true);
    }
    }


    PS.: Es kann sein, dass ich heut nicht mehr antworten kann. Hab morgen Früh Schule.
  7. k**********k

    import java.awt.*;
    import javax.swing.*;
    
    class MeinZeichenPanel extends JPanel {
    
    
    public void paintComponent(Graphics g) {
    
    g.setColor(Color.orange);
    
    g.fillRect(20, 50, 100, 100);
    
    }
    }
    
    class Hauptfenster extends JFrame {
    
    public Container cp = getContentPane();
    public FlowLayout layout = new FlowLayout();
    public MeinZeichenPanel zp = new MeinZeichenPanel();
     
      Hauptfenster(){
      super();
      
      cp.setLayout(layout);
      setSize(300,300);
      setBackground(Color.WHITE);
      zp.setBounds(1,1,298,298);
      cp.add(zp,layout.CENTER);
    }
    
    public static void main(String[] args) {
    Hauptfenster frame = new Hauptfenster();
    frame.setLocation(100, 100);
    frame.setVisible(true);
    }
    }



    Ich hab da mal kurz wa für dich gemacht. Wenn du noch fragen hast einfach per PN. Ich konnte es leider nicht ausprobieren da mein Interpreter nicht tut, aber der Compiler schluckts ohne Probleme.

    mfg Ketchup
  8. Hallo,

    leider läfut das Beispiel von ketchupfleck nicht so recht bei mir. Deshalb hier noch ein Vorschlag. Der Kernpunkt ist, dass du ein Frame brauchst in welchem dein JPanel dargestellt werden kann.

    import java.awt.*;
    import javax.swing.*;

    class MeinZeichenPanel extends JPanel
    {
    protected void paintComponent( Graphics g )
    {
    super.paintComponent( g );
    g.setColor(Color.orange);
    g.fillRect(20, 50, 100, 100);
    }
    }

    class ZeichneRechteck
    {
    public static void main( String[] args )
    {
    JFrame f = new JFrame(\"MeinZeichenPanel\");
    f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    f.setSize( 150, 200 );
    f.add( new MeinZeichenPanel() );
    f.setVisible( true );
    }
    }

    Hier noch mehr Infos:

    http://www.galileocomputing.de/openbook/javainsel6/javainsel_15_001.htm

    Gruß
    Manni

    Beitrag geändert: 20.9.2007 23:31:59 von bandi999
  9. Autor dieses Themas

    n**********4

    Also ersmal danke!
    Aber trotzdem immernoch: Wenn ich des Programm ausführe komm wieder die selbe Meldung. Ich glaub ich shau mir mal den Editor genauer an den ichs ausführen lass, vllt liegt ja daran der Fehler.(und des Smilie hab natürlich vor dem ausführen weggemacht!)
  10. Hallo,

    um ehrlich zu sein, empfehle ich dir zum Einstieg nicht unbedingt Eclipse. Es ist sicher eine tolle IDE aber doch sehr gewöhnungsbedürftig.
    Sofern java SDK vernünftig auf deinem Rechner installiert ist (und das brauchst du auch damit Eclipse läuft), gehe auf die Kommandozeile. Lege eine neue Texdatei an und benenne sie um in rechteck.java und kopiere den Quelltext von mir hinein.
    Gehe auf der Kommandozeile in das Verzeichnis mit dieser Datei und gib

    javac rechteck.java

    ein. Du erhältst zwei zusätzliche Dateien im gleichen Verzeichnis:
    ZeichneRechteck.class und MeinZeichenPanel.class.
    Gib auf der Kommandozeile ein:

    java ZeichneRechteck

    und das Programm sollte laufen.
    Falls die Befehle javac (=Compiler) und java nicht funktionieren, sind evtl. die Pfade nicht eingetragen.

    Gruß
    Manni

    Beitrag geändert: 21.9.2007 17:00:13 von bandi999
  11. Autor dieses Themas

    n**********4

    Ich habs ausprobiert und:
    Danke und noch mal danke!
    Endlich funktionierts!!*freu*
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!