# background bei JButton



## famco (22. Apr 2011)

hallo,

ich hätte erwartet, mit dem Property "background" bereits beim Entwurf eines Formulars die Farbe eines Knopfes definieren zu können (in Netbeans). Leider geht das irgendwie nicht. Habe schon diverse Möglichkeiten probiert aber das gewünschte Ergebnis konnte ich nicht erreichen. Bin für jenden Tipp dankbar ...


----------



## Beni (22. Apr 2011)

Wenn ich mich recht entsinne, ignorieren einige LookAndFeels die Hintergrundfarbe von Buttons einfach.

IMHO sehen farbige Buttons auch komisch aus, wäre ein Icon nicht besser?


----------



## Piez (22. Apr 2011)

Ich habe keine Ahnung von netbeans aber normalerweise sollte das so funktionieren.


```
Color c = new Color(20, 20 , 30);
JButton meinknopf = new JButton("Drueck mich");
meinknopf.setBackground(c);
```

Das  hier  könnte auch helfen:

lg


----------



## famco (22. Apr 2011)

im Prinzip habt Ihr beide recht.
Ich habe als Übung eine TicTacToe programmiert und möchte jetzt das ganze grafisch darstellen. Der Einfachheit halber dachte ich mir, ich nehme einfach Buttons um die Felder darzustellen. Dann kann man per klick sozusagen das Kreuz setzen.
Allerdings bewirkt die Änderung von "Background" im Property-Editor von NetBeans einfach gar nichts ...


----------



## Piez (23. Apr 2011)

einzige ideen ...

versuche meinknopf.setOpaque(boolean);

stell mal die Eigentschaft opaque (Transparenz) um.

oder hat deine Farbe einen Alphawert der die Farbe transparent werden läßt.

oder setzt du die Hintergrundfarbe während des Programmablaufs neu ? Dann könnte es sein, dass die Koponenten nicht neu gezeichnet werden.

lg und frohe Ostern


----------



## famco (23. Apr 2011)

hi, wenn ich im Programm jButton.setBackGround(..) aufrufe, wird die Farbe tatsächlich geändert. 

Allerdings möchte ich die Farben bereits beim Designen der Form einstellen und natürlich auch sehen. Das Design soll ja hübsch werden


----------



## L-ectron-X (23. Apr 2011)

Bis hier her konnte ich dir noch folgen, hätte da auch noch die eine oder andere Idee. Aaaber...
...wenn du mit button.setBackground() nun das gewünschte Ergebnis erhältst, was ist dann nun noch dein Problem?


----------



## Piez (23. Apr 2011)

L-ectron-X hat gesagt.:


> Bis hier her konnte ich dir noch folgen, hätte da auch noch die eine oder andere Idee. Aaaber...
> ...wenn du mit button.setBackground() nun das gewünschte Ergebnis erhältst, was ist dann nun noch dein Problem?




Recht hat er. Ich habe das Gefühl, dass du dir das gui einfach zusammenklickst ohne genau zu wissen was du da eigentlich machst. Aber Schimpfe hat noch nie geholfen 

Setze in dem generierten Code den Hintergrund bevor der Aufruf "meinekompnente.setVisible(true);" aufgeführt wird. meinekomponente ist in der Regel der JFrame bzw. deine eigene Klasse die von JFrame abgeleitet wurde.

Wenn das alles nicht hilft dann solltest du vielleicht ein bissel Code posten oder dich ein wenig mit der manuellen Erstellung von GUIs befassen.

lg


----------



## famco (23. Apr 2011)

ich glaube wir haben uns etwas missverstanden. Richtig, ich bin noch relativ neu bei swing und mache deshalb sicher einiges nicht richtig  

Was ich möchte:
- unter NetBEans mit dem Formulardesigner ein Formular "zusammenklicken" das finde ich nämlich viel einfacher, als den Code selber hinzuschreiben ...
- ich öffne den JFrame im Design-Modus.
- die einzelnen Komponenten ziehe ich dann aus der Palette auf den JFrame.
- ich ordene die Komponenten per Maus auf dem JFrame an.

und jetzt kommts:

- für einige Komponenten möchte ich ein paar Eigenschaften (z.B. die Farbe eines Buttons) verändern:
   * ich klicke auf die Komponente (in diesem Fall ein JButton)
   * im Eigenschaftsfenster dieses Buttons kann ich jetzt diverse Einstellungen machen:
      z.B. foreground, font, text, tooltiptext usw... und auch background
   * das Ändern der dieser Properties kann man dann direkt im Design-Fenster beobachten
   **** nur bei background tut sich einfach NICHTS, wenn ich die Farbe ändere ****

das ist also das Problem.

Vielleicht mache ich als Neuling alles falsch, aber mir fällt es eben einfach leichter wenn ich eine Form visuell "zusammenklicke".
Unabhängig davon verwende ich selbstverständlich Businessobjekte und das Ganze ist an das MVC-Pattern angelehnt.

Ich hoffe jetzt wird etwas klarer, was mein Problem ist und vielleicht fällt Euch jetzt etwas dazu ein ...

Danke


----------



## L-ectron-X (23. Apr 2011)

Dass der Button keine Hintergrundfarbe annehmen will, hängt mit dem LookAndFeel zusammen, welches von NetBeans benutzt wird. Dieses LAF lässt keine sichtbare Änderung der Farbe des Buttons zu.
Ich vermute daher, dass du ein anderes LAF in der kompilierten Ausgabe deines Programms hast.

Also kurz: Netbeans nutzt das System-LAF, dein Programm aber das Metal-LAF.


----------



## famco (24. Apr 2011)

ja, habe inzwischen bei LAF geforscht. In meiner App habe ich kein LAF eingestellt, darum war ich auch davon ausgegangen,das gleiche LAF zu bekommen, das der NetBeans Designer erzeugt.
Scheinbar ist das aber nicht so. Kann man den Netbeans-Formdesigner auf ein bestimmtes LAF einstellen?

Danke


----------



## L-ectron-X (24. Apr 2011)

Soll sich NetBeans selbst in einem bestimmten LAF präsentieren, oder soll dein Programm ein anderes LAF annehmen?
Ich frage nur nach, damit es nachher keine Missverständnisse gibt.


----------

