Java button Click



  • Hallo
    Ich bin dabei Solitaire( also das spiel und damit meine ich das mit den steinen und nicht das von microsoft) zu programmieren. Als steine habe ich verschiedene buttons angelegt.
    Im moment suche ich nach einer Simplen möglichkeit, den button den in anclicke Rot zu färben. Den actionListener Habe ich auf den buttons drauf aber irgendwie will es nich so recht. Und bis jetzt habe ich noch nichts einfaches gefunden wie zb in C++ oder so. Wäre Cool wenn mir jemand sagen könnte wie ich einfach über click auf einen button den geclickten Rot färbe.

    Mfg 1009927



  • Ich glaube das sollte mit (J)Component.setBackground(Color.RED) gehen.

    z.B. (ungetestet)

    class Test implements ActionListener
    {
      private Button b;
      ...
      void init()
      {
        b=new Button(...);
        b.addActionListener(this);
      }
    
      public void actionPerformed(ActionEvent e)
      {
        if(e.getSource()==b)
          b.setBackground(Color.RED);
      }
    }
    


  • So, hier noch ein lauffähiges Beispiel:

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class Test extends JFrame {
    
        private JButton b;
    
        // --------------------
    
        private class HandleButtonEvents implements ActionListener {
    
            @Override
            public void actionPerformed(ActionEvent e) {
                if(e.getSource() == Test.this.b) {
                    Test.this.b.setBackground(Color.RED);
                }
            }
    
        }
    
        // --------------------
    
        public Test() {
            super();
            setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    
            b = new JButton("Test");
            b.addActionListener(this.new HandleButtonEvents());
            add(b);
    
            pack();
            setLocationRelativeTo(null);
        }
    
        // --------------------
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    new Test().setVisible(true);
                }
            });
        }
    
    }
    


  • du könntest auch jtogglebutton verwenden -- dann bleibt der button eingedrückt und du brauchst ihn nicht rot färben


Anmelden zum Antworten