# JButton - Hintergrund verändern



## System.exit(0) (23. Feb 2009)

Hallo,

ich kann die Hintergrundfarbe eines JButtons problemlos ändern.

Aber wie schaffe ich es, dass der JButton danach auch noch den Farbverlauf vom "Original" hat? Nach dem Farbwechsel ist die Fläche nämlcih gleichmäßig eingefärbt.

Vielen Dank

mfg

System.exit(0)


----------



## byte (23. Feb 2009)

Mit einfachen JButtons wüsste ich keine Lösung. Mit JXButtons (siehe SwingX) könnte es klappen, wenn man einen enstprechenden Filter über den Background-Painter legt.


----------



## Schandro (23. Feb 2009)

ganz einfach:

```
JButton b = new JButton("Hallo foo bar Fubar blubb bla blabla"){
			public void paintComponent(Graphics g){
				super.paintComponent(g);

				g.setColor(new Color(200,100,000,100));
				g.fillRect(0,0,getSize().width,getSize().height);
			}
		};
```


----------



## Ebenius (24. Feb 2009)

Hier sollte Dir Scott Violet's Blog: Customizing Ocean Gradients weiter helfen.

Ebenius


----------



## Fu3L (24. Feb 2009)

Ich hab vor Kurzem auch nach sowas gesucht und diesen Blog besucht, aber wirklich schlau bin ich daraus nich geworden. Ich weiß jezz zwar, dass ein Button farbmäßig so aufgebaut ist, aber wie und wo ich das jezz in meinen Code einbau, hab ich anhand dieses Codeschnipsels nich rausbekommen. 
Könntest du das bitte etwas detaillierter oder vllt mit einem kompilierbaren Beispiel erklären, Ebenius?


----------



## Ebenius (25. Feb 2009)

Es ist eigentlich nicht schwer. Allerdings funktioniert es nur für alle Buttons und nicht für einen einzelnen: [HIGHLIGHT="Java"]@SuppressWarnings("boxing")
public static void main(String[] args) {
  List<Object> gradients = new ArrayList<Object>(5);
  gradients.add(0.18f);
  gradients.add(0.17f);
  gradients.add(new Color(0xCCFFFF));
  gradients.add(new Color(0x9999FF));
  gradients.add(new Color(0x6600CC));
  UIManager.put("Button.gradient", gradients);

  final JButton button = new JButton("My Button");
  final JFrame f = new JFrame("Metal Button Fun");
  f.setContentPane(new JScrollPane(button));
  f.pack();
  f.setLocationRelativeTo(null);
  f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  f.setVisible(true);
}[/HIGHLIGHT]
Ebenius


----------



## Fu3L (25. Feb 2009)

Danke 

Das hät ich mir aus dem Blog nich ableiten können...


----------



## Ebenius (25. Feb 2009)

Fu3L hat gesagt.:


> Das hät ich mir aus dem Blog nich ableiten können...


Dabei fehlte doch nur die Zeile 9. 

Happy Hacking!
Ebenius


----------

