Erstes Programm

  • Themenstarter Themenstarter Teutone
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
T

Teutone

Gast
Hi ihr Meister,
Ich bin an Java interessiert, hab keine Ahnung, mir einfach mal nen paar Applets angeschaut und dachte daraufhin: "Probier ich auch mal". Gedacht - Getan. Mein Applet soll eigentlich nur nen Label und nen Button besitzen und wenn der Button gedrückt wird, werden 2 integer-variablen addiert und auf dem label ausgegeben. Funzt bloß nicht. Ist aber auch kein wunder, da das applet ja ohne ahnung vom java-syntax "zusammengeklemmpnert" wurde (Deswegen auch Anfängerforum). Was ist bitte an folgendem Quelltext falsch:

Java:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class ButtonSumme extends Applet
 implements ActionListener {
 
 public int a,b,c;
 private Label ausgabe;
 private Button start;

 public void init () {

  setLayout (new BorderLayout() );

  ausgabe = new Label ("Hallo");
  add(ausgabe);

  start = new Button("Rechnen!");
  start.addActionListener (this);
  start.setActionCommand ("click"); 
  add(start);

  setVisible(true);
  
 }

 public void actionPerformed (ActionEvent e) {

  String pressed = e.getActionCommand();
  if (pressed.equals("click")) {
   a=4; b=6;
   c=a+b;
   ausgabe.setText("" + c);
  }
 }

}

Danke für eure Hilfe.
 
Mist, als Gast kann man nicht editieren...
Ich sollte vielleicht noch erwähnen, was nicht funzt... Nach einbinden in html seh nich nen schönes graues Applet mit nix drin^^
 
Ich glaub' Du musst noch angeben wo die Elemente hingesetzt werden sollen. Zum Beispiel
Code:
add("North", ausgabe);
// ...
add("South", start);
 
Teutone hat gesagt.:
Mist, als Gast kann man nicht editieren...
Ich sollte vielleicht noch erwähnen, was nicht funzt... Nach einbinden in html seh nich nen schönes graues Applet mit nix drin^^
Hm, hast du mal versucht das Applet anders darzustellen (AppletViewer) ?
Das mit dem grauen Fester / Applet ist bei mir seltsamerweise auch so..und zwar bei allen Anwendungen,etc.
Was bei mir hilft ist kurz die Auflösung zu verstellen (meistens von 16 auf 32 bit)..
ist nun wirklich keine 'Lösung', aber so könntest du rausfinden obs am applet selbst liegt oder irgendetwas mit deiner JVM net stimmt..
Das JDK neu zu installieren hab ich auch mehrmals versucht, auch unterschiedliche Versionen, k.A. woran das liegt. Ich hab aber auch schon von andern von grauen Fenstern gehört.. scheint systemunabhängig zu sein, viel mehr kann ich dazu aber auch nicht sagen ???:L
 
Ok hat sich erladigt, das mit dem Borderlayout war irgendwie scheiße und jedesmal browser neustarten is auch ziemlich nervig.
 
Da du das BorderLayout verwendest müssen die Buttons natürlich wissen wo sie hin sollen.

Code:
add(ausgabe, BorderLayout.North);
add(start, BorderLayout.South);

Als Einstieg in Java würde ich trotzdem mal zuerst die einfachen Konsolenanwendungen empfehlen.

Mfg Chucky
 
Zu dem Problem mit der grauen Appletfläche im Browser liest du bitte mal in der FAQ nach.

Ich habe dir mal aus deinem Quellcode ein funktionierendes Applet geschrieben.
Ich habe bewusst einige Zeilen mehr geschrieben, um dir bestimmte Abläufe zu zeigen.
Testen kannst du das Applet hier.
Java:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class ButtonSumme extends Applet
implements ActionListener {
   private Label ausgabe;
   private Button startBtn;
   private TextField aValueTf, bValueTf;

   public void init () {

     setLayout (new GridLayout(2, 2));
     
     aValueTf = new TextField();
     bValueTf = new TextField();
     add(aValueTf);
     add(bValueTf);

     startBtn = new Button("Summe =");
     startBtn.addActionListener(this);
     add(startBtn);
     
     ausgabe = new Label();
     add(ausgabe);
   }

   public void actionPerformed (ActionEvent e) {
      Object quelle = e.getSource(); //ActionEvent nach dem Auslöser fragen
      if(quelle == startBtn) {
         String a = aValueTf.getText(); //Eingaben aus Textfeldern holen
         String b = bValueTf.getText();
         int x = Integer.parseInt(a); //Zeichenkette zu ganzen Zahlen parsen
         int y = Integer.parseInt(b);
         int z = x + y;
         String c = String.valueOf(z); //int zu Zeichenkette verwandeln
         ausgabe.setText(c); //Ausgabe auf dem Label
      }
   }
}
Da es auch vorkommen kann, dass Buchstaben in die Textfelder eingegeben werden, empfiehlt es sich außerdem, die Eingaben auf Korrektheit zu prüfen.
Dazu gibt es bspw. aus der Klasse Character die Methode isLetter() oder isDigit() mit denen man auf Buchstaben oder Zahlen prüfen kann.
Möglich wäre auch das Parsen in einen try-catch-Block zu legen und die NumberFormatException zu fangen.

und der passende HTML-Code:
HTML:
<html>
<head>
<title>ButtonSumme-Applet</title>
</head>
<body>
<applet code="ButtonSumme.class" width="200" height="50">
Kein Java aktiv, bitte Java in den Browsereinstellungen aktivieren.
</applet>
</body>
</html>
 
Jap, danke, aber hab ich inzwischen auch selbst geschafft. Woher auch immer du wusstest, dass das Applet mal genauso aussehen sollte 🙂 . Am besten ich guck mir erstmal die ganzen verschiedenen layouts an. Ach ja, ne Konsolenanwendung kann ich ja schließlich auch mit Turbo Pascal schreiben 😀 ...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben