JFrame Hintergrund ändern(Java)?
Hi,
Ich würde gern in meinem JFrame den Hintergrund ändern
Wie mach ich das am besten?
1 Antwort
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?
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);
}
}
Du musst das Panel mit setOpaque auf false setzen. Er zeigt jetzt das Panel an. Oder du änderst die Hintergrundfarbe des Panels
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.
Korrektur meines obigen Snippets: