Problem mit Eclipse

JavDev

Grünschnabel
Hallo,

ich bin neu hier und habe große Probleme mit Eclipse. Wieso márkiert er mir bei diesem Code "MyFrame" gelb, der Anfang sollte ausreichen:

Code:
import java.awt.*; 
import java.awt.event.*; 

public class MyFrame extends Frame implements MouseListener, WindowListener 
{

und sagt mir, dass: "The serializable class MyFrame does not declare a static final serialVersionUID field of Type long"?

Er gibt auch diese Fehlermeldung:

java.lang.Error: Unresolved compilation problems:
MyFrame cannot be resolved to a type
Window cannot be resolved
MyFrame cannot be resolved to a type
Cannot make a static reference to the non-static method setVisible(boolean) from the type Window

at MyApplet.<init>(MyApplet.java:8)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Was bedeutet das?
 
zu den Unresolved Compilation Problems:

du hast irgendwo eine statische Methode aus der Heraus du versuchst, die Methode setVisible() zu rufen. Dies geht aber nicht, da du setVisible() nur auf einem Objekt rufen kannst.

Dein MyApplet muss eine Instanz von MyFrame erzeugen und dann auf dieser setVisible() rufen.

Eine der Klasse in der Klassenhierarchie von MyFrame implementiert scheinbar Serializable. Diese Klasse sollte dann eine property serialVersionUID besitzen (am besten mal in der Javainsel beim Thema Serialisierung nachschauen). Es gibt zwei Wege das zu behandeln:

1. Ignorieren ;) Wenn du deine Objekte nicht über die Leitung schicken willst, ist das kein großes Prblem.

2. Im Eclipse auf die kleine Lampe klicken und sich so ein Ding generieren lassen.

Warum und wieso das Ding gebracuht wird verrät dir die Javainsel. Ohne deine Vorkenntnisse bezgl. Serialisierung zu kennen könnte das ein größeres Fass werden ;)

REINHAUN!
 
Hallo,

ja aber was ist denn an diesem code falsch? Habe ihn aus einem Tutorial:

Code:
import java.awt.*; 
import java.awt.event.*; 

public class MyFrame extends Frame implements MouseListener, WindowListener 
{ 
  Label LabelSize, LabelWeight, LabelResult; 
  TextField TextSize, TextWeight; 
  Button OK; 

  public MyFrame() 
  { 
    setLayout(new GridLayout(3, 2)); 
    setSize(400, 120); 
    LabelSize = new Label("Ihre Körpergröße in cm:"); 
    LabelWeight = new Label("Ihr Gewicht in kg:"); 
    LabelResult = new Label(); 
    TextSize = new TextField(); 
    TextWeight = new TextField(); 
    OK = new Button("OK"); 
    OK.addMouseListener(this); 
    add(LabelSize); 
    add(TextSize); 
    add(LabelWeight); 
    add(TextWeight); 
    add(LabelResult); 
    add(OK); 
    addWindowListener(this); 
  } 

  public void mouseReleased(MouseEvent ev) 
  { 
    if (TextSize.getText().length() > 0 && TextWeight.getText().length() > 0) 
    { 
      try 
      { 
        int Size = Integer.parseInt(TextSize.getText()); 
        int Weight = Integer.parseInt(TextWeight.getText()); 
        double BMI = Weight / ((Size / 100.0) * (Size / 100.0)); 
        if (BMI < 18.5) 
        { 
          LabelResult.setText("Sie haben möglicherweise Untergewicht."); 
        } 
        else if (BMI > 30) 
        { 
          LabelResult.setText("Sie haben möglicherweise starkes Übergewicht."); 
        } 
        else if (BMI > 25) 
        { 
          LabelResult.setText("Sie haben möglicherweise Übergewicht."); 
        } 
        else 
        { 
          LabelResult.setText("Sie haben Normalgewicht."); 
        } 
      } catch (NumberFormatException ex) { } 
    } 
    else 
    { 
      LabelResult.setText("Geben Sie Größe und Gewicht an."); 
    } 
  } 

  public void mousePressed(MouseEvent ev) { } 
  public void mouseEntered(MouseEvent ev) { } 
  public void mouseExited(MouseEvent ev) { } 
  public void mouseClicked(MouseEvent ev) { } 

  public void windowClosing(WindowEvent ev) 
  { 
    setVisible(false); 
    dispose(); 
  } 

  public void windowActivated(WindowEvent ev) { } 
  public void windowClosed(WindowEvent ev) { } 
  public void windowDeactivated(WindowEvent ev) { } 
  public void windowDeiconified(WindowEvent ev) { } 
  public void windowIconified(WindowEvent ev) { } 
  public void windowOpened(WindowEvent ev) { } 
}

Wo ist denn in Eclipse eine kleine Lampe?!:confused:
 
An den Code ist auf den ersten Blick nichts falsch, er ist nur ein wenig hässlich ;) Variablen schreibt man klein, Kommentare und sinnvolles ExceptionHandling sind was tolles usw. usw ;). Der Stracktrace zeigt dir ja auch, dass der Fehler im Konstruktor von MyApplet auftaucht (at MyApplet.<init>(MyApplet.java:8)).

Bei der Klasse, die dir das Warning wegen der serialVersionUID schmeißt, sollte in der Zeile mit der Klassendeklaration diese Quickfix Glühbirne/lampe sein. Wenn man auf die klickt, bietet Eclipse Lösungsvorschläge für das Problem an ;)

REINHAUN!
 
Zurück