Java JFrame Hintergrundfarbe ändern


#1
hallo zusammen, ich habe versucht eine Art memory zu programmieren , allderdings ändert sich die Farbe meines JFrames nicht.

mein versuch die Hindergrundfarbe zu ändern ist bei zeile 39:

Java:
package pack1;

import java.awt.Color;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class main extends JPanel implements ActionListener{
   
    ImageIcon icon = new ImageIcon("C:\\Users\\vince\\Pictures\\bilder für game\\memory-karte-hinten.png");
    static ImageIcon icon1 = new ImageIcon("C:\\Users\\vince\\Pictures\\bilder für game\\eule.jpg");
    static ImageIcon icon2 = new ImageIcon("C:\\Users\\vince\\Pictures\\bilder für game\\hund.jpg");
   
   
    JButton button1 = new JButton(icon);
    JButton button11 = new JButton(icon1);
    JButton button2 = new JButton(icon);
    JButton button22 = new JButton(icon2);
    JButton button3 = new JButton(icon);
    JButton button33 = new JButton(icon2);
    JButton button4 = new JButton(icon);
    JButton button44 = new JButton(icon1);
   
    public static void main(String[] args) {
        main main = new main();
        JFrame frame = new JFrame("Game");
        frame.setVisible(true);
        frame.setSize(1000, 1000);
        frame.add(main);
        icon1.setImage(icon1.getImage().getScaledInstance(200,200,Image.SCALE_DEFAULT)); 
        icon2.setImage(icon2.getImage().getScaledInstance(200, 200,Image.SCALE_DEFAULT));
        frame.getContentPane().setBackground(Color.BLUE);
    }
    public main() {
       
        add(button1);
        add(button11);
        add(button2);
        add(button22);
        add(button3);
        add(button33);
        add(button4);
        add(button44);
       
       
       
       
        button11.setVisible(false);
        button1.setVisible(true);
        button22.setVisible(false);
        button2.setVisible(true);
        button33.setVisible(false);
        button3.setVisible(true);
        button44.setVisible(false);
        button4.setVisible(true);
       
       
       
       
       
       
        button1.addActionListener(this );
        button2.addActionListener(this );
        button3.addActionListener( this );
        button4.addActionListener( this );
    }
    public void actionPerformed(ActionEvent ae) {
        Object ob = ae.getSource();
       
        if(ob == button1) {
            button11.setVisible(true);
            button1.setVisible(false);
           
        }if(ob == button2) {
            button22.setVisible(true);
            button2.setVisible(false);
        }if(ob == button1) {
           
        }if(ob == button3) {
            button33.setVisible(true);
            button3.setVisible(false);
        }if(ob == button4) {
            button44.setVisible(true);
            button4.setVisible(false);
        }
       
    }

}
PS:Bin erst 10, kann noch nicht sehr viel
 
#4
Hallo VinceJosh2007,

interessehalber habe ich selber ein bisschen rumrecherchiert und wenn ich das so richtig verstanden habe, kann man theoretisch die Farbe des JFrame ändern, aber davon wurde ausdrücklich abgeraten, da es irgendwann zu einem Ausgabefehler kommen kann. Da die contentPane direkt auf dem JFrame liegt, wäre es am sinnvollsten die Farbe der contentPane statt des JFrames selber zu ändern. Dafür gibt es 2 verschiedene Varianten, die mir bekannt sind:

  1. Die Hexadezimal-Schreibweise:
    1. Java:
      contentPane.setBackground(new Color(000000));
  2. Mit Color:
    1. Java:
      contentPane.setBackground(Color.BLACK);
Hier noch eine hilfreiche Liste der Farbcodes in der Hexadezimal-Schreibweise für Java sowie JavaScript Entwickler:

https://www.kostenlose-javascripts.de/farbcodes/

Und hier noch eine nützliche Auflistung für Color in Java:

https://java-tutorial.org/color.html

Ich hoffe, dass ich dir damit weiterhelfen konnte.

Freundliche Grüße