tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
561
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von NetPerformance
    NetPerformance NetPerformance ist offline Mitglied Brokat
    Registriert seit
    Aug 2003
    Beiträge
    409
    Hi...

    ich habe 3 Buttons:
    -gelb
    -blau
    -rot

    Je nachdem welchen Button ich anklicke, soll sich die Hintergrundfarbe ändern.

    Laut Core Java Buch soll man die Hintergrundfarbe mit setBackground() ändern können.
    Dieser Befehl wird bei mir nicht erkannt: s.h. ganz unten

    Alles andere sollte eigentlich stimmen.

    Gruß
    Aaron


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
     
    public class ButtonTest {
        
        public static void main(String[] args) {
            
            myFrame frame = new myFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.show();
        }
    }
     
    // Hier wird das Fenster angelegt
    class myFrame extends JFrame {
        
        public myFrame() {
            setTitle("Button Test");
            setSize(640, 480);
            
            // Panel in das Fenster einfügen
            myPanel panel = new myPanel();
            Container container = getContentPane();
            container.add(panel);
        }
    }
     
    // Hier werden die Button und mit den entsprechenden Aktionen verbunden
    class myPanel extends JPanel {
        
        public myPanel() {
            
            // Schaltfläche erzeugen
            JButton yellowButton = new JButton("gelb");
            JButton blueButton   = new JButton("blue");
            JButton redButton    = new JButton("red");
            
            // Zum Panel hinzufügen
            add(yellowButton);
            add(blueButton);
            add(redButton);
            
            
            //Schaltflächeanktion erzeugen
            myAction yellowAction = new myAction(Color.yellow);
            myAction blueAction   = new myAction(Color.blue);
            myAction redAction    = new myAction(Color.red);
            
            // Aktion mit der Schaltfläche verbinden
            yellowButton.addActionListener(yellowAction);
            blueButton.addActionListener(blueAction);
            redButton.addActionListener(redAction);
        }
    }
     
    class myAction implements ActionListener {
     
        Color background;
        
        public myAction(Color c) {
            background = c;
        }
        
        public void actionPerformed(ActionEvent e) {
            setBackground(background);
        }
    }
     

  2. #2
    illaX illaX ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Konstanz
    Beiträge
    268
    Hi,

    er erkennt die Methode nicht an, weil deine Klasse myAction (Klassen sollen immer gross geschrieben werden) den ActionListener implementiert und nicht den Button.

    So auf den schnellen Blick ist bei dir auch alles richtig. Du musst nur deinem ActionListener (myAction) den Button mit uebergeben.

    Beispiel:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    class myAction implements ActionListener {
     
        Color background;
        
                    Button myButton;
     
        public myAction(Button myButton, Color c) {
            background = c;
                                    this.myButton = nyButton;
        }
        
        public void actionPerformed(ActionEvent e) {
            myButton.setBackground(background);
        }
    }
    Geändert von illaX (14.02.06 um 08:07 Uhr)
     
    MfG
    illaX

  3. #3
    elmato elmato ist offline Mitglied Brokat
    Registriert seit
    May 2005
    Ort
    NRW
    Beiträge
    408
    Du musst nichtmal eine Instanzvariable benutzen, die kann man sich sparen..
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    class myAction implements ActionListener {
     
        Color background;
        
                
     
        public myAction(Button myButton, Color c) {
            background = c;
                                   
        }
        
        public void actionPerformed(ActionEvent e) {
            if(e.getSource instanceOf JButton){
                          if(e.getActionCommand.equals("gelb"){
                               ((JButton)e.getSource) .setBackground(background);
                            }
                     }
        }
    }
     

  4. #4
    illaX illaX ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Konstanz
    Beiträge
    268
    Auf die idee bin ich bisher noch gar nicht gekommen. Aber so ist es natuerlich noch besser
    Am besten waers noch wie du statt Button Component nimmst, dann kannst du es bei allen Componenten anwenden
     
    MfG
    illaX

Ähnliche Themen

  1. Auflösungs änderung = design änderung
    Von SameX im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 10.11.05, 16:24
  2. VPN - IP Änderung
    Von djnelly im Forum Netzwerke
    Antworten: 5
    Letzter Beitrag: 22.10.04, 06:44
  3. letzte Änderung
    Von xppx im Forum PHP
    Antworten: 6
    Letzter Beitrag: 19.09.04, 14:25
  4. Antworten: 2
    Letzter Beitrag: 22.07.04, 23:01
  5. Antworten: 1
    Letzter Beitrag: 11.08.03, 21:47