JFrame Hintergrund ändern(Java)?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Die Hintergrundfarbe kannst du mit der setBackground-Methode ändern.

frame.setBackground(Color.orange);

Ein Beispiel für ein Hintergrundbild findest du hier: Wie kann ich in Java/JFrame im Hintergrung ein Image/Bild setzen?

regex9  25.09.2020, 22:09

Korrektur meines obigen Snippets:

frame.getContentPane().setBackground(Color.orange);
1
tim2002431 
Fragesteller
 25.09.2020, 22:13
@regex9

Habe jetzt beides versucht leider passiert immer noch nichts:(

Hier ist mein Quellcode der gui:package pack1;











import java.awt.Color;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;

import javax.swing.JPanel;



public class gui {


	public gui () {
	

		
	
		
		Icon x = new ImageIcon(getClass().getResource("eingabebutton.png"));
		Icon y = new ImageIcon(getClass().getResource("ansehenbutton.png"));
		Icon a = new ImageIcon(getClass().getResource("eckdatenbutton.png"));
		Icon b = new ImageIcon(getClass().getResource("einstebutton.png"));
		Icon c = new ImageIcon(getClass().getResource("schließenbutton.png"));
		
		
		
		
		System.out.println("started");
		
		JPanel panel = new JPanel();
    JFrame fenster = new JFrame();
    fenster.getContentPane().setBackground(Color.orange);
		    fenster.setSize( 1920, 1280 );
			  fenster.setTitle("BLA");
			  fenster.setExtendedState(java.awt.Frame.MAXIMIZED_BOTH);
			  
			  
		 
			 
	    
		  
	    //Button 0
	

				 
			JButton button = new JButton( x);
		  //Funktion
			
		  panel.add(button);
		 
		  //Button 1
		  
	    JButton button1 = new JButton( y);
	    //Funktion
	    button1.setLayout(null);
	     
	    panel.add(button1);
		  
	     
	     
	    //Button 2
	     
	    JButton button2 = new JButton(a );
	    //Funktion
	    button2.setLayout(null);
	     
		  panel.add(button2);
		  
	    
	     
	    //Button 3
	     
	    JButton button3 = new JButton(b );
	    //Funktion
	    button3.setLayout(null);
	     
	    panel.add(button3);
		   
	    
	     
	    //Button 4
	     
	    JButton button4 = new JButton(c );
	    //Funktion
	    button4.setLayout(null);
	     
	    panel.add(button4);
	     
	     
	     
	    fenster.add(panel);
	    fenster.setVisible(true);

	

	  
	}
}
0
pressESC2  25.09.2020, 23:37
@tim2002431

Du musst das Panel mit setOpaque auf false setzen. Er zeigt jetzt das Panel an. Oder du änderst die Hintergrundfarbe des Panels

0
regex9  25.09.2020, 23:48
@tim2002431

Das liegt daran, dass du dem Frame ein Panel zugefügt hast, welches das Content Pane verdeckt. Du müsstest also dem Panel die Hintergrundfarbe geben.

panel.setBackground(Color.orange);

Außerdem machst du da wieder seltsame Sachen. Du benennst deine Elemente wieder nichtssagend/ungünstig und nun versuchst du noch, den Layout Manager für die Buttons zu definieren?

button4.setLayout(null);

Diese Zeilen können alle raus, sie bringen nichts. Generell solltest du das Argument null für die Methode setLayout schnell wieder vergessen. Wenn du das aus irgendeinem Tutorial hast, verfolge das nicht weiter, denn das ist ziemlich schlechter Code und offenbart lediglich, dass der Autor Swing nicht verstanden hat.

Swings Konzept ist die Einordnung der Elemente in Layout Manager. Welche es gibt, wird in den Oracle Java Tutorials aufgeführt. Wenn dir das zu schwer ist: Suche nach dem MigLayout (externe Bibliothek) oder verwende ein Swing Builder-Tool (Drag & Drop; gibt es in jeder der bekannten Java-IDEs: Eclipse, NetBeans, IntelliJ, ...). Noch eine dritte Option wäre es, nicht mit Swing zu arbeiten, sondern mit OpenJFX.

0