Farbänderung des Frames bei Klick .

Status
Nicht offen für weitere Antworten.

EddiesBerlin

Mitglied
So habe mal nen kleines Programm umgeschrieben .. aber irgendwie geht da was überhaupt nicht !! :-(


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


public class XSwingDemo02 extends JFrame 
       implements ActionListener {

  JPanel pa = new JPanel();
  JPanel bleiste = new JPanel(); 
  JPanel rechts = new JPanel();
  JButton rot,gelb,gruen,blau;

 
  public XSwingDemo02() {
    super("Button-Klick Frame");
    setSize(400,200);
    
           
    getContentPane().setLayout(new BorderLayout());

    getContentPane().add("South",bleiste);
    getContentPane().add("Center",pa);
    getContentPane().add("Right",rechts);
    rot = new JButton("rot");
    gelb = new JButton("gelb");
    gruen = new JButton("grün");
    blau  = new JButton("blau");
    rechts.add(rot);
    rot.addActionListener(this);
    bleiste.add(gelb);
    gelb.addActionListener(this);
    bleiste.add(gruen);
    gruen.addActionListener(this);
    bleiste.add(blau);
    blau.addActionListener(this);

  }

  public void actionPerformed(ActionEvent e) {
    Object quelle = e.getSource();
    if(quelle == gruen) pa.setBackground(Color.green);
    if(quelle == rot  ) pa.setBackground(Color.red);
    if(quelle == blau ) pa.setBackground(Color.blue);
    if(quelle == gelb ) pa.setBackground(Color.yellow);    
  }


  
}

wenn ich
Code:
JPanel rechts = new JPanel();    //das weg
getContentPane().add("Right",rechts);  //auch dat
UND
 rechts.add(rot);   // in  bleiste.add(rot);   ändere

, dann klappt das Programm, will aber rechts, links, oben und unten auf ein Button drücken können, und die Farbe soll sich im Center ändern .. was hab ich denn da falsch gemacht ??
 
Hm, seh jetzt spontan keinen Fehler, aber du addest deine Componenten auf ne deprecated weise deinem BorderLayout. Korrekt heitß es so:

Code:
getContentPane().add(bleiste, BorderLayout.SOUTH);
 
er meckert immer rum, das er Rechts nicht zum Layout nehmen kann .. unknow constraint : Right

und mit der anderen Schreibweise ist der gleiche Fehler
 
Code:
getContentPane().add("East",rechts);

(Vermutlich mal wieder zu langsam 🙁
Edit: Nee, doch nicht! 🙂 )
 
Das ändert nichts daran, dass du dennoch eine deprecated Methode verwendest von was dringend abzuraten ist (ich gehe mal nicht davon aus, dass du eine so alte Version verwendest!? 😉 )
 
Hobbit_Im_Blutrausch hat gesagt.:
ich gehe mal nicht davon aus, dass du eine so alte Version verwendest!?

Womit du Recht hast. 😀

Ich selbst rufe immer

Code:
add(panel, BorderLayout.EAST);

auf, alleine schon deshalb, weil mir die Übergabe von "East" als String
Bauchgrimmen verursacht.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben