JButton Hintergrundfarbe ändern .setBackground(Color.Red) funktioniert nicht?

3 Antworten

Schade, dass du meine bisherigen Ratschläge, die ich auf deine älteren Frage gegeben habe, ignoriert hast. Des Weiteren solltest du deine Oberflächenkomponenten mit Layout Managers ausrichten, um die GUI flexibel zu halten. Mit einem Null-Layout und setBounds zu arbeiten, ist hingegen ziemlich schlechter Stil.

Bezüglich der Hintergrundfarbe: Das funktioniert bei mir.

import java.awt.*;
import javax.swing.*;

public class Example {
  public static void main(String[] args) {
    SwingUtilities.invokeLater(() -> {
      JFrame frame = new JFrame();
      JButton button = new JButton("Click me");
      button.setBackground(Color.RED);
      frame.getContentPane().add(button);
      frame.pack();
      frame.setVisible(true);
    });
  }
}

Ich vermute, dass du ein spezifisches Look & Feel setzt.


Huhngut 
Fragesteller
 19.03.2019, 22:11

Ich bin ein wenig auf deine Ratschläge eingegangen das Problem,ist das ich an einem Projekt mit anderen Leuten Zusammenarbeite

Danke übrigens ich teste deines wen. Das von alexbyjava nicht funktioniert und werde mir Layout Manager anschauen weil ich die ohne Einwilligung verändern kann

0
regex9  19.03.2019, 22:28
@Huhngut
(...) das Problem,ist das ich an einem Projekt mit anderen Leuten Zusammenarbeite (...)

Ich kann dich nur ermutigen: Setze dich durch. Wenn noch mehr Leute davon überzeugt sind, auf statische Variablen zu bauen, wäre ein guter Weg, ist das mehr als bedenklich. Umso länger man es nicht ändert, umso unflexibler, unwartbarer und insgesamt schlechter wird das Endprodukt, sofern es überhaupt zu einem erfolgreichen Ende kommt.

1
regex9  20.03.2019, 22:19

Da sich meine Vermutung hier bestätigt hat, poste ich auch an dieser Stelle noch einmal die Lösungsmöglichkeiten:

a) Man schreibt sich eine eigene Button-Klasse und überschreibt dabei die paintComponents-Methode.

b) Verhindern, dass das Look & Feel für den Button greift:

// prevent l&f painting
imageButton.setContentAreaFilled(false);
// set opaque, because it will be set to false in step before
imageButton.setOpaque(true);
// set background color
imageButton.setBackground(Color.RED);
0
btn.setOpaque(true);
btn.setBackground(...);

Huhngut 
Fragesteller
 19.03.2019, 22:10

Teste ich morgen danke ich habe es bus jetzt mit einem kabel gelöst auf dem der Text stand welches ich dem Button hinzugefügt habe aber da hatte ich Probleme beim Text zentrieren wenn das hilft bin ich dir seht dankbar

0

Uff.. Am Besten solltset du dich von Swing lösen und alles nochmal mit JavaFX machen, dann kannst du auch ordentlich mit CSS designen


SchmidiMC  18.03.2019, 14:05

ist für einen Anfänger vlt. nicht die beste Methode, denke auch nicht das er Ahnung von CSS hat weder JavaFX

0
SchmidiMC  18.03.2019, 14:12
@Huhngut

Aso oke, naja da du ja in dem Berreich eher Anfänger bist hatte ich das jetzt nicht unbedingt vermutet.

1
SETTAR  18.03.2019, 14:13
@SchmidiMC

CSS lernt man sehr früh, zumindest bei uns... Java Swing hab ich damals (zum Glück) übersprungen und hab direkt mit FX angefangen

0
SchmidiMC  18.03.2019, 14:30
@SETTAR

Ich habe mir das selbst beigebracht, da es alles um Programmierung etc. in meiner damaligen Mittelalter Schule nicht gab, deswegen konnte ich das jetzt schlecht beurteilen.

0
SETTAR  18.03.2019, 14:32
@SchmidiMC

Dann weißt dus jetzt. Ich empfehle dir, Java FX zu lernen, aber mach erst mal dein Projekt fertig. Und lass mich es danach ausprobieren ;D

1
Huhngut 
Fragesteller
 19.03.2019, 22:07
@SchmidiMC

Ich habe vorher diverse andere programmierSprachen praktiziert

0