Applet-Objekt ist vor dem Hintergrund

  • Themenstarter Themenstarter SirVivaljunior
  • Beginndatum Beginndatum
S

SirVivaljunior

Gast
Guten Tag,
ich habe ein Problem mit einem Programm:
ich will einen Button positionieren, der den Hintergrund rot macht. Das klappt auch, aber vor dem Hintergrund befindet sich das weiße Applet.
Was mache ich falsch?
Hier der Code:
Java:
public class rotmacher extends Applet {
  private Button buttonFarbe = new Button();
  private TextField textField1 = new TextField();
  public void init() {
    Panel cp = new Panel(null);
    cp.setBounds(0, 0, 294, 280);
    add(cp);
    buttonFarbe.setBounds(8, 56, 75, 25);
    buttonFarbe.setLabel("mache rot!");
    buttonFarbe.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent evt) { 
        buttonFarbe_ActionPerformed(evt);
      }
    });
    cp.add(buttonFarbe);
    textField1.setBounds(128, 56, 118, 20);
    textField1.setBackground(Color.WHITE);
    cp.add(textField1);
  } // end of init
  public void buttonFarbe_ActionPerformed(ActionEvent evt){
    setBackground(Color.red);
  } // end of buttonFarbe_ActionPerformed
} // end of class
So soll es aussehen:
attachment.php


So sieht es aus:
attachment.php


Vielen Dank!
SirVivaljunior
P.S.: Bilder hochladen hat iwie nicht geklappt...
 

Anhänge

  • z8h58zky.png
    z8h58zky.png
    3,2 KB · Aufrufe: 39
  • n8ccbezd.jpg
    n8ccbezd.jpg
    15 KB · Aufrufe: 39
Zuletzt bearbeitet von einem Moderator:
Puhh, AWT und Swing sind jetzt nicht grad meine Stärken, aber ich glaube, das Weiße ist der Hintergrund Deines Panel. Den müsstest Du auch rot machen.
 
Geht vielleicht cp.setColor(new Color(0,0,0,0)); ?
Ansonsten die Buttons dem Applet und nicht dem Panel geben-
so kannst du das Panel mit setVisible unsichtbar machen.
 
Vielen Dank für die schnellen Antworten!
Ich habe wohl die Aufgabenstellung falsch verstanden.
Ich sollte den Hintergrund des Panels rot machen, nicht des Applets. Ich habe gerade auch gemerkt, dass das mit "cp.setColor" gemacht wird. Allerdings kommt dann diese Fehlermeldung:
rotmacher.java:24:5: error: cannot find symbol
cp.setBackground(Color.RED);
^
symbol: variable cp
location: class rotmacher

Warum findet es das Symbol "cp" nicht? Dadrüber funktioniert es doch auch!
SirVivaljunior
 
Jemand gibt dir eine Aufgabe und verlangt dafür das Null-Layout? 😱
Die Methodenvariable ist nur in der Methode sichtbar. Mach sie zu einer Instanzvariable, dann ist sie in der ganzen Klasse sichtbar.
 
Geht vielleicht cp.setColor(new Color(0,0,0,0)); ?
Ansonsten die Buttons dem Applet und nicht dem Panel geben-
so kannst du das Panel mit setVisible unsichtbar machen.
setColor gleiches Problem.
Wie kann ich die Buttons dem Applet geben und das Panel unsichtbar machen?
Wie gesagt, dass ist eigentlich nicht die Aufgabe.

@volvagia: Entschuldige, wie Du siehst bin ich Anfänger und kann mit Begriffen wie Null-Layout und Instanzvariable noch nichts anfangen.
 
Java:
public class rotmacher extends Applet {
  private Button buttonFarbe = new Button();
  private TextField textField1 = new TextField();
  private Panel cp;
  public void init() {
    cp = new Panel(null);
    cp.setBounds(0, 0, 294, 280);
    add(cp);
    buttonFarbe.setBounds(8, 56, 75, 25);
    buttonFarbe.setLabel("mache rot!");
    buttonFarbe.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent evt) { 
        buttonFarbe_ActionPerformed(evt);
      }
    });
    cp.add(buttonFarbe);
    textField1.setBounds(128, 56, 118, 20);
    textField1.setBackground(Color.WHITE);
    cp.add(textField1);
  } // end of init
  public void buttonFarbe_ActionPerformed(ActionEvent evt){
    cp.setBackground(Color.red);
  } // end of buttonFarbe_ActionPerformed
}
 
Vielen Dank!
Wenn ich das richtig verstanden habe, hast Du jetzt erstmal des cp definiert, was bei mir vorher gefehlt hat.
Ich erarbeite mir Java mit einem Buch, woraus ich auch diese Aufgabe habe. Schritt für Schritt wurde der Quellcode erklärt, und zwar genau so!
 
Ja.
Instanzvariablen (also Variable "zwischen" Methoden ohne static) sind in jeder Methode sichtbar. Variablen in Methoden nur in der Methode, in der sie deklariert sind.
Musst natürlich aufpasse, dass init() immer vor buttonFarbe_ActionPerformed() aufgerufen wird. In dem Fall spielt das keine Rolle, da init() vom Applet aufgerufen wird, aber das ist allgemein wohl einer der häufigsten Fehler überhaupt.


[OT]Errinnert mich an meinen Buchhaltungsunterricht. An Anfang haben wirs falsch gemacht, und in der Mitte des zweiten Halbjahres haben wir gelernt, dass man es doch anderst tun sollte damit es richtig ist. Zwar ist das jetzt nicht explizites "falsch", aber ungünstig ist es definitiv.[/OT]
 

Neue Themen


Zurück
Oben