# Fehler beim Compilieren



## Toni@frust (30. Nov 2005)

So ich will folgenden Quellecode Compilieren - das isn Fram, mit nem Butten der mir ne Datei ,die im gleichen ordner liegt, öffnen soll!

Quellcode: 

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

public class GUIframeTest extends JFrame implements ActionListner
{
JButton buttonHilfe;

  public GUIframeTest()
  {
  buttonHilfe = new JButton();
  buttonHilfe.addActionListener(this)
  }


  public void actionPerformed(ActionEvent e)
  {
    String dateiname = "Hilfe.chm";
    Runtime.getRuntime().exec("C:/WINNT/hh.exe " + dateiname);
  }


  public static void main(String [] atgs)
  {
  JFrame jf = new GUIframeTest();

  jf.setsize(300,300);
  jf.setVisible(true);

  }
}
```

so ich komm aber gar ned dzu das auszuprobieren weil es nen Fehler gibt -->

Compiliere C:\Programmsource\GUITEST\Test\GUIframeTest.java mit Java-Compiler
GUIframeTest.java:13: ';' expected
  }
  ^
1 error

so ich hab mir schon mein Kopf zermartert -- > aber da is viel bei rausgekommen !
( ja ich mach das noch ned so lang )

--> wenn mir jemand sagen könnte was an meinem Quellcode falsch is wäre ich euch sehr dankbar...

mfg
Toni


----------



## The_S (30. Nov 2005)

Wie wärs mit nem Semikolon am Ende von Zeile 13?


----------



## Lim_Dul (30. Nov 2005)

btw, du solltest den Button auch noch in den Frame hinzufügen mittels 

```
getContentPane().add(buttonHilfe);
```
Einzufügen nach Zeile 13.


----------



## Toni@frust (30. Nov 2005)

so ich hab das mal nen bissel umgebaut, weils nach den Änderungen noch nen paar fehler gab!


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

public class GUIframeTest extends JFrame implements ActionListner
{
JButton buttonHilfe;

  public GUIframeTest()
  {
  buttonHilfe = new JButton();
  buttonHilfe.addActionListener(this);
  getContentPane().add(buttonHilfe);
  
  int frameWidth = 350;
  int frameHeight = 300;
  setSize(frameWidth, frameHeight);
  

  }


  public void actionPerformed(ActionEvent e)
  {
    String dateiname = "Hilfe.chm";
    Runtime.getRuntime().exec("C:/WINNT/hh.exe " + dateiname);
  }


  public static void main(String [] atgs)
  {
  JFrame jf = new GUIframeTest();
  WindowListener wca = new WindowClosingAdapter();

  jf.addWindowListener(wca);


  }
}
```

das ding is der bringt mir noch 2 Fehlerchen - wo ich selber noch dran tüftle, ber für Lösungsvorschläge offen bin..


----------



## The_S (30. Nov 2005)

Und welche Fehler?


----------



## Toni@frust (30. Nov 2005)

oh stimmt hatte ich vergessen zu posten  

Compiliere C:\Programmsource\GUITEST\Test\GUIframeTest.java mit Java-Compiler
GUIframeTest.java:5: cannot resolve symbol
symbol  : class ActionListner 
location: class GUIframeTest
public class GUIframeTest extends JFrame implements ActionListner
                                                    ^
GUIframeTest.java:12: addActionListener(java.awt.event.ActionListener) in javax.swing.AbstractButton cannot be applied to (GUIframeTest)
  buttonHilfe.addActionListener(this);
             ^
2 errors


----------



## thE_29 (30. Nov 2005)

implements ActionListener

Du hast ein E vergessen!

Bei dir steht Listner!!


----------



## The_S (30. Nov 2005)

Es heißt ActionList*e*ner und net ActionListner. Wie wärs wenn du dir mal ein wenig länger als 2 Sekunden gedanken über deine Fehlermeldungen machst und versuchst sie selber zu lösen? Waren bis jetzt ausschließlich Schreibfehler, da kann man selbst draufkommen (z. B. nochmal in der API/in nem Buch nachschauen wies richtig geschrieben gehört)


----------



## Toni@frust (30. Nov 2005)

ach mal was anderes , kann man eigentlich so wie in html zu beispiellllll nen itergrundbild setzen? und wenn wei...????
wie man normale bilder setz weis ich...


----------



## Toni@frust (30. Nov 2005)

oh ich merk schon bin nen dussel


----------



## Toni@frust (1. Dez 2005)

So hat alles geklapt bis ich nen Lable eingefügt hab und ich gleub jetzt is das nen bissel komplizierter...


```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

public class GUIframeTest extends JFrame implements ActionListener
{
  JButton buttonTabelle;
  
  
  JLable icon;



  public GUIframeTest()
  {
   super("CD_DVD-Datenbank Controllcenter");
   Panel jp = new Panel(null);
   add(jp);

   icon = new JLable(new ImageIcon("controllcenter.gif"));
   icon.setBounds(10, 390, 164, 75);
   jp.add(icon);

  buttonTabelle = new JButton("Tabellen Formular");
  buttonTabelle.setBounds(80, 20, 140, 15);
  jp.add(buttonTabelle);

  
  
  buttonTabelle.addActionListener(this);
  
  
  int frameWidth = 500;
  int frameHeight = 500;
  setSize(frameWidth, frameHeight);
  

  }
   public void actionPerformed(ActionEvent evt)
  {

    String tb= "Table";
    try {
     Runtime.getRuntime().exec("C:\\Programme\\Java\\j2re1.4.2_10\\bin\\javaw.exe " + tb);
    } catch(IOException err) {
     System.out.println("Fehler" +err);
    }



  }
  

  
  public static void main(String [] atgs)
  {
  JFrame jf = new GUIframeTest();
  WindowListener wca = new WindowClosingAdapter();

  jf.addWindowListener(wca);
  jf.setVisible(true);

  }
}
```

Compiliere C:\Programmsource\GUITEST\Test\GUIframeTest.java mit Java-Compiler
GUIframeTest.java:11: cannot resolve symbol
symbol  : class JLable 
location: class GUIframeTest
  JLable lable1;
  ^
GUIframeTest.java:21: icon is not public in java.awt.Frame; cannot be accessed from outside package
   icon = new JLable(new ImageIcon("controllcenter.gif"));
   ^
GUIframeTest.java:21: cannot resolve symbol
symbol  : class JLable 
location: class GUIframeTest
   icon = new JLable(new ImageIcon("controllcenter.gif"));
              ^
GUIframeTest.java:22: icon is not public in java.awt.Frame; cannot be accessed from outside package
   icon.setBounds(10, 390, 164, 75);
   ^
GUIframeTest.java:22: cannot resolve symbol
symbol  : method setBounds (int,int,int,int)
location: class java.awt.Image
   icon.setBounds(10, 390, 164, 75);
       ^
GUIframeTest.java:23: icon is not public in java.awt.Frame; cannot be accessed from outside package
   jp.add(icon);
          ^
GUIframeTest.java:23: cannot resolve symbol
symbol  : method add (java.awt.Image)
location: class java.awt.Panel
   jp.add(icon);
     ^
7 errors

 das is der Fehler oder besser die Fehler.. mal schauen was euch dazu einfählt


----------



## Guest (1. Dez 2005)

sry 5 Fehler konnte ich beheben sin nur noch 2

location: class GUIframeTest
  JLable icon;
  ^
GUIframeTest.java:21: cannot resolve symbol
symbol  : class JLable 
location: class GUIframeTest
   icon = new JLable(new ImageIcon("controllcenter.gif"));
              ^
2 errors


----------



## The_S (1. Dez 2005)

Und schon wieder nur Schreibfehler ...  :shock:  :autsch: 

JLabel net JLable


----------



## Toni@frust (1. Dez 2005)

lol


----------



## Toni@frust (1. Dez 2005)

so und jetzt forder ich dich!!! 
hab alle schreibfehler berichtigt und jetzt kommt der Fehler

java.lang.Error: Do not use GUIframeTest.add() use GUIframeTest.getContentPane().add() instead
 at javax.swing.JFrame.createRootPaneException(JFrame.java:465)
 at javax.swing.JFrame.addImpl(JFrame.java:491)
 at java.awt.Container.add(Container.java:307)
 at GUIframeTest.<init>(GUIframeTest.java:19)
 at GUIframeTest.main(GUIframeTest.java:58)
Exception in thread "main" 

was sagst nu!!?


----------



## Weima (1. Dez 2005)

Toni@frust hat gesagt.:
			
		

> Do not use GUIframeTest.add() use GUIframeTest.getContentPane().add() instead



Du gibst dir deine Antwort selber


----------



## RicoSoft (1. Dez 2005)

oben nach dem du das Panel erstellt hast im Konstruktor, machst Du add(jp). Dort einfach getContentPane().add(jp) hinschreiben. Sagt er Dir doch, oder?


----------



## Weima (1. Dez 2005)

Als Konsequenz würde ich aber alles mittels getContentPane().add() schreiben...

Wenn nicht, dann korrigiert mich!


----------



## The_S (1. Dez 2005)

Als Konsequenz würde ich lernen Fehlermeldungen zu lesen. Es geht ja hier net um hochkomplexe Meldungen die man ohne Java Hintergrundwissen net lösen könnte, sondern um mehr oder weniger stinknormales Englisch dass für jeden der Englisch kann verständlich sein sollte.


----------



## Düark (1. Dez 2005)

Jaja, die Zeit der Jecken...


----------



## Toni@frust (1. Dez 2005)

jo - aber hab das ganze ding ma ganz anders gelöst, ja das mit dem english is ni so mein ding...


----------



## The_S (2. Dez 2005)

Toni@frust hat gesagt.:
			
		

> jo - aber hab das ganze ding ma ganz anders gelöst, ja das mit dem english is ni so mein ding...



Würd an deiner Stelle ma anfangen Englisch zu lernen. Heutzutage kommste ohne Englisch net weit. Egal in welchem Beruf es sei denn du willst Kloputzer werden :wink: . Für wörter die du net kennst: www.leo.org

Und wie hastes gelöst?


----------



## SamHotte (2. Dez 2005)

Einfach mal in die JFrame-API schauen, da kann man lesen, dass man nicht direkt add() ausführt, sondern getContentPane().add() ...


----------



## tini (2. Dez 2005)

Wenn er aber kein Englisch kann, dann nützt ihm auch der Blick in die API nix. Da versteht er doch sowieso nichts.

Würde aber auch sagen, dass er dann langsam mal anfangen sollte, es zu lernen.


----------



## Toni@frust (3. Dez 2005)

Will euch ja ni kränken aber es geht ohne getContentPane().add() ... siehe 


```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;


public class Controllcenter extends JFrame
{

  

  /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
JButton buttonTabelle;
  JButton help;
  JLabel icon;
  JLabel copyright;
  JLabel helptext;

  
  public Controllcenter()
  {
   
  super("CD_DVD-Datenbank Controllcenter");
   
  Panel jp = new Panel(null);
  add(jp);
   
  
  copyright = new JLabel("Programmiert von Toni Renner - alle Rechte vorbehalten.");
  copyright.setBounds(10, 350, 350, 15);
  jp.add(copyright);
   
  icon = new JLabel(new ImageIcon("controllcenter.gif"));
  icon.setBounds(10, 390, 164, 75);
  jp.add(icon);
  
  helptext = new JLabel("Hilfe zum Progarmm gibt es unter dem Hilfebutton.");
  helptext.setBounds(10, 365, 300, 15);
  jp.add(helptext);
  
  buttonTabelle = new JButton("Tabellen Formular");
  buttonTabelle.setBounds(80, 20, 140, 15);
  jp.add(buttonTabelle);
  
  help = new JButton("Hilfe");
  help.setBounds(80, 40, 140, 15);
  jp.add(help);

  buttonTabelle.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent evt) {
  buttonTabelleActionPerformed(evt);
      }
  });
    
  help.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent evthp) {
  helpActionPerformed(evthp);
      }
  });
    
  int frameWidth = 500;
  int frameHeight = 500;
  setSize(frameWidth, frameHeight);
 
  }

  
  public void buttonTabelleActionPerformed(ActionEvent evt)
  {

   String tb= "Table";
   try {
   Runtime.getRuntime().exec("C:\\Programme\\Java\\jre1.5.0_04\\bin\\javaw.exe " + tb);
    } catch(IOException err) {
     System.out.println("Fehler" +err);
    }
  }
  
  public void helpActionPerformed(ActionEvent evthp)
  {

    String hpdatei= "help.txt";
    try {
    Runtime.getRuntime().exec("C:\\Windows\\NOTEPAD.EXE " + hpdatei);
    } catch(IOException errhp) {
     System.out.println("Fehler" +errhp);
    }
  }

  
  public static void main(String [] atgs)
  {
	  
  JFrame jf = new Controllcenter();
  WindowListener wca = new WindowClosingAdapter();

  jf.addWindowListener(wca);
  jf.setVisible(true);

  }
 }
```

und wegen engl. hab gesagt das ich ni so damit hab aber ich kanns - > hatte Prüfung ne 2....
bloß -> das Schulengl. is e bissel was anderes...
hier muss ich mich mit Fachbegriffen rumplagen und ich hab erst vor 3 Tagen mit java angefagen, also sorry meinerseitz


----------



## The_S (3. Dez 2005)

Naja, du hast ja jetzt auch ein Panel dazwischen geschoben. Das is dann wieder was anderes :roll: .

Versuch wenigstens mal die Fehlermeldungen zu interpretieren. Irgendwann musste des lernen. Ich kann auch net viel mehr als das Schulenglisch.

Ansonsten viel Erfolg und Spaß mit Java :wink:


----------



## Lim_Dul (3. Dez 2005)

Toni@frust hat gesagt.:
			
		

> Will euch ja ni kränken aber es geht ohne getContentPane().add() ... siehe



Aber erst ab Java 1.5.
Vorher war getContentPane() nötig.

Ab 1.5 wird ein add in einem JFrame automatisch an die ContentPane() weitergeleitet.


----------



## The_S (3. Dez 2005)

Ach verdammt, ich sollte mir BEIDE Schnippsel komplett nochmal anschauen bevor ich versuche oberschlau zu antworten ... Sry, kannst meine Antwort aus dem Protokoll streichen


----------



## Toni@ganslieb (3. Dez 2005)

passt heir ned rein weis ich, aber wie alt seid ihr son im durchschnitt bzw. wie lang programmiert ihr schon mit java?


----------



## The_S (3. Dez 2005)

Gabs scho zig Threads, auch hier hilft die Forensuche  :wink: 

Aber da ich jetzt eh scho gepostet hab

/ in 11 Tagen 18, Programmiere seit 1.9.2004 (insgesamt und auch Java). Hab da meine Ausbildung angefangen


----------

