Hintergrundfarbe eines Buttons ändern

bspainkf36

Erfahrenes Mitglied
Hey,

ich habe mir mit Java einen Button erstellt und möchte den Hintergrund per Klick ändern. Mein erstes Problem war, dass der Button so groß war und ich den Hintergrund gar nicht gesehen habe. Dieses habe ich mit der Methode

c.setLayout( new GridLayout(3, 2, 6, 2) );

gelöst. Jedoch besteht das Problem mit dem Hintergrund weiterhin. Die normale Farbe ist grau und wenn ich den Button betätige wird der Hintergrund auch manchmal rot, aber nur für einen kurzen Augenblick und wechselt anschließend seine Farbe in den normalen Zustand.

Der Code aus dem Konstruktor:

Code:
    JButton myButton1 = new JButton("Drück Mich ;-)");
    JLabel myLabel1 = new JLabel("Hintergrund");

    myPanel.add (myLabel1);
    myPanel.add (myButton1);

    //cp.setLayout( new GridLayout(4, 2, 6, 2) );
    cp.add(myLabel1,BorderLayout.CENTER);
    cp.add(myButton1,BorderLayout.CENTER);
    myButton1.setBackground(Color.gray); //Hintergrundfarbe
    myButton1.setForeground(Color.white); //Schriftfarbe


    myButton1.addActionListener ( new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        myButton1Action(e);
      }
    });

Meine Methode myButton1Action:

Code:
void myButton1Action( ActionEvent e) {
    setBackground(Color.red);
}

Danke für die Hilfe :)

Greetz kon
 
Hi,

versuchs mal so:
Code:
public class Main extends JFrame{

	private JPanel myPanel;
	private JLabel myLabel1;
	private JButton myButton1;
	public Main(){
		
	   super();
	   setLayout(new GridLayout(0,1));
	    myPanel= new JPanel();
	    myButton1 = new JButton("Drück Mich ;-)");
	    myLabel1 = new JLabel("Hintergrund");

	    myButton1.setBackground(Color.GREEN); //Hintergrundfarbe
	    myButton1.setForeground(Color.white); //Schriftfarbe
	    
	    myPanel.add (myLabel1);
	    myPanel.add (myButton1);


	    getContentPane().add(myPanel);

	    myButton1.addActionListener ( new ActionListener() {
	      public void actionPerformed(ActionEvent e) {
				SwingUtilities.invokeLater(new Runnable(){
					public void run() {
				        myButton1Action();	
					} 
				});
	      }
	    });
	    
	    
		pack();
	}
	
	public static void main(String[] args) {
		
		new Main().show();
	}
	
	void myButton1Action() {

	    myButton1.setBackground(Color.RED);

	}
}
 
Zuletzt bearbeitet:
Zurück