Hilfe beim ändern des Hintergrundes eines JFrames

Hallo, ich bin gerade dabei Java zu lernen, jedoch bleibe ich immer an einem bestimmten Punkt stecken.
Ich kann den Hintergrund meines Jframe nicht ändern.
Ich habe eine Gui- und eine frameKlasse.
Hier der Code der beiden Klassen:
Klasse mit dem frame:

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class frame extends JFrame implements ActionListener{
 
    private JButton schließen;
    private JButton einstellungen;
    private JButton info;
    private JButton ende;
   
    public static void main(String[] args){     
        //erledigt grobe Einstellungen am frame
        frame frame = new frame("Jump to the moon");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400,400);
        frame.setLayout(null);
        frame.setResizable(false);
        frame.setVisible(true);
    }
    public frame(String title){
     
        /*Der "Spiel starten"-Knopf wird erstellt
        * und im JFrame eingebaut
        */
        super(title);
        schließen = new JButton("Spiel starten");
        schließen.setBounds(120,40,160,40);/*120, 40 ist die Position und 160, 40 die Größe                    *
                                          *120 ist der Abstand links und rechts und
                                          *40 ist der Abstand oben und unten
                                          */
        schließen.addActionListener(this);
        add(schließen); 
     
        einstellungen = new JButton("Einstellungen");
        einstellungen.setBounds(120,120,160,40);
        einstellungen.addActionListener(this);
        add(einstellungen);
     
        info = new JButton("Credits");
        info.setBounds(120,200,160,40);
        info.addActionListener(this);
        add(info);
     
        ende = new JButton("Spiel schließen");
        ende.setBounds(120,280,160,40);
        ende.addActionListener(this);
        add(ende);   
    }

    //Wenn der Button schließen gedrückt wird, soll das Spiel gestartet werden.
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == schließen){
            fenster();
        }
        if(e.getSource() == info){
            Object[] option = { "OKAY"};
         
            JOptionPane.showOptionDialog(null, "Programmiert von: Tim", "InfoBox", JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,option,option[0]);
         
         
        }
        if(e.getSource() == einstellungen){         
            auswahl();
        }
        if(e.getSource() == ende){
            //Programm wird geschlossen
            System.exit(0);
        }
    }

    public static void auswahl() {
    }

    public static void fenster() {     
        JFrame fenster = new JFrame("Jump to the moon");
        fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fenster.setSize(1300, 878);
        fenster.setLayout(null);
        fenster.add(new gui());
        fenster.setVisible(true);
    }
}
Klasse mit dem Gui:

Java:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.Timer;

@SuppressWarnings("serial")
public class gui extends JPanel implements ActionListener{ 
    Timer time;
    int gedrückt;
    Image img;
    int lauf;
    int X_Bild;
 
    public gui(){
        gedrückt = 0;
        lauf = 0;
     
        //Mit setFocusable kann man auf die Datei zugraeifen und bearbeiten
        setFocusable(true);
        ImageIcon u = new ImageIcon("C:/Users/tim/Desktop/JavaProgramme/abend.jpg");
        img = u.getImage();
        addKeyListener(new AL());
     
        time = new Timer(5, this);
        time.start();
    }
    public void bewegen(){
        X_Bild += lauf;     
    }
 
    public void actionPerformed(ActionEvent e){     
        bewegen();
        repaint();     
    }
    //Hiermit kann man die Datei bearbeiten
    public void paint(Graphics g){
     
        super.paint(g);
        Graphics2D f2 = (Graphics2D) g;
        f2.drawImage(img, X_Bild, 0, null);
    }
    private class AL extends KeyAdapter{
        public AL(){
            }
     
        public void keypressed(KeyEvent e){
            gedrückt = e.getKeyCode();
            if(gedrückt == KeyEvent.VK_SPACE){
             
            }
            if(gedrückt == KeyEvent.VK_LEFT){
             
            }
            if(gedrückt == KeyEvent.VK_RIGHT){
             
            }
        }
        public void keyReleased(KeyEvent e){
            gedrückt = e.getKeyCode();
            if(gedrückt == KeyEvent.VK_LEFT || gedrückt == KeyEvent.VK_RIGHT){
                lauf = 0;             
            }
        }     
    }
}
 
Zuletzt bearbeitet von einem Moderator:

neulii

Mitglied
Bitte immer in den Code-Tags posten.


Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;




public class frame extends JFrame implements ActionListener{

private JButton schließen;
private JButton einstellungen;
private JButton info;
private JButton ende;


public static void main(String[] args){

//erledigt grobe Einstellungen am frame
frame frame = new frame("Jump to the moon");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,400);
frame.setLayout(null);
frame.setResizable(false);
frame.setVisible(true);
}
public frame(String title){

/*Der "Spiel starten"-Knopf wird erstellt
* und im JFrame eingebaut
*/
super(title);
schließen = new JButton("Spiel starten");
schließen.setBounds(120,40,160,40);/*120, 40 ist die Position und 160, 40 die Größe *
*120 ist der Abstand links und rechts und
*40 ist der Abstand oben und unten
*/
schließen.addActionListener(this);
add(schließen);

einstellungen = new JButton("Einstellungen");
einstellungen.setBounds(120,120,160,40);
einstellungen.addActionListener(this);
add(einstellungen);

info = new JButton("Credits");
info.setBounds(120,200,160,40);
info.addActionListener(this);
add(info);

ende = new JButton("Spiel schließen");
ende.setBounds(120,280,160,40);
ende.addActionListener(this);
add(ende);



}
//Wenn der Button schließen gedrückt wird, soll das Spiel gestartet werden.
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == schließen){
fenster();
}
if(e.getSource() == info){
Object[] option = { "OKAY"};

JOptionPane.showOptionDialog(null, "Programmiert von: Tim", "InfoBox", JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,option,option[0]);


}
if(e.getSource() == einstellungen){

auswahl();
}
if(e.getSource() == ende){
//Programm wird geschlossen
System.exit(0);
}



}
public static void auswahl() {


}
public static void fenster() {

JFrame fenster = new JFrame("Jump to the moon");
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenster.setSize(1300, 878);
fenster.setLayout(null);
fenster.add(new gui());
fenster.setVisible(true);


}

}


Java:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.Timer;



@SuppressWarnings("serial")
public class gui extends JPanel implements ActionListener{

Timer time;
int gedrückt;
Image img;
int lauf;
int X_Bild;

public gui(){
gedrückt = 0;
lauf = 0;

//Mit setFocusable kann man auf die Datei zugraeifen und bearbeiten
setFocusable(true);
ImageIcon u = new ImageIcon("C:/Users/tim/Desktop/JavaProgramme/abend.jpg");
img = u.getImage();
addKeyListener(new AL());

time = new Timer(5, this);
time.start();
}
public void bewegen(){
X_Bild += lauf;

}

public void actionPerformed(ActionEvent e){

bewegen();
repaint();

}
//Hiermit kann man die Datei bearbeiten
public void paint(Graphics g){

super.paint(g);
Graphics2D f2 = (Graphics2D) g;
f2.drawImage(img, X_Bild, 0, null);
}
private class AL extends KeyAdapter{
public AL(){
}

public void keypressed(KeyEvent e){
gedrückt = e.getKeyCode();
if(gedrückt == KeyEvent.VK_SPACE){

}
if(gedrückt == KeyEvent.VK_LEFT){

}
if(gedrückt == KeyEvent.VK_RIGHT){

}
}
public void keyReleased(KeyEvent e){
gedrückt = e.getKeyCode();
if(gedrückt == KeyEvent.VK_LEFT || gedrückt == KeyEvent.VK_RIGHT){

lauf = 0;

}
}

}

}
 

Joose

Top Contributor
Dir fehlen wichtige Grundlagen in der objektorientierten Programmierung. Diese solltest du besser beherrschen bevor du mit UIs anfängt.

Deine Klasse "frame" bekommt kein Objekt von "gui" als Content. Stattdessen rufst du eine statische Methode auf welche ein komplett neues JFrame erzeugt, welches nun ein "gui" Objekt als content gesetzt bekommt.
Die Methode "fenster" sollte nicht statisch sein. Statt ein neues JFrame zu erzeugen solltest du mit dem Arbeiten welches du hast (this). Wenn du eben dem vorhanden dein "gui" Objekt als content setzt dann sollte es passen.

Anmerkungen zum Code:
Klassen werden in UpperCamelCase geschrieben. (und etwas aussagekräftiger könnten sie sein)
Ein Ableiten von JFrame bzw. JPanel ist unnötig -> siehe: java - Why shouldn't you extend JFrame and other components? - Stack Overflow
Vermeide "_" in Variablennamen
 

TheFrog

Aktives Mitglied
Die Variablenbezeichnung ist auch miserabel... Dein Button heißt "einstellungen" ein anderer "info". Viel besser wäre z.B. btnEinstellungen oder cmdEinstellungen ;)

Was ich überhaupt nicht verstehe ist, warum du jetzt schon mit swing spielst. Du verstehst doch noch nicht einmal die Basics der Basics.
 

Joose

Top Contributor
Die Variablenbezeichnung ist auch miserabel... Dein Button heißt "einstellungen" ein anderer "info". Viel besser wäre z.B. btnEinstellungen oder cmdEinstellungen

Ich würde hier nur "gedrückt" und "schließen" aufgrund der Umlaute bzw. des "ß" kritisieren.

Bei den Variablennamen zu den Buttons lässt sich darüber lange diskutieren. Dein Vorschlag mit "btn" für Buttons oder wahrscheinlich "lbl" für Lables geht in die Richtung "HungarianNotation".
Ich persönlich halte nicht viel davon, da sie einfach schwerer zu lesen ist. Hier würde ich eher (wenn es wirklich nicht anders geht) zu "infoButton" und "einstellungenButton" tendieren, was lesbarer ist und nur wenige Buchstaben mehr kostet (was bei einer IDE mit autovervollständigung nicht zu beachten ist).
Aber generell würde ich so eine Benennung vermeiden und mir überlegen warum 2 Komponten die gleiche Bezeichnung haben ;)
 
Okay, danke erstmal für die vielen Antworten in dieser kurzen Zeit. Ich werde mir eure Ratschläge zu Herzen nehmen.
Hätte von euch vielleicht jemand eine Lösung oder einen Tipp (z.B. bestimmte YouTube Videos oder komplette Videokurse), wie ich diese Lücken auffüllen könnte?:)
 

TheFrog

Aktives Mitglied
@Rindfleischüberwachung "Java ist auch eine Insel" gibt's im Internet kostenlos zu lesen. Das ist ein Standardwerk zu Java und ist, wie ich finde sehr gut geschrieben. ;)

Auf youtube findest du auch sehr viele Videotutorials, allerdings ist auch viel Mist dabei. Die Videos von thenewboston (auf englisch) finde ich z.B. ganz gut.

Dann kannst du noch schauen auf tutorialspoint.com da gibt es auch viel zu java. Hier im Forum findet man auch Tutorials.

Der Link zum Insel-Buch ist dieser: http://openbook.rheinwerk-verlag.de/javainsel/
http://tutorials.jenkov.com/java/index.html <<-- Auch gut ^^
Ich hoffe ich konnte dir bisl helfen :)
 
Zuletzt bearbeitet:
Danke ich habe mir bereits vor 1 Woche schon das Buch "java für Dummies" zugelegt. Ich bin bereits bei Seite 160, habe aber durch dieses Buch nicht wirklich viel dazugelernt.
Dann werd ich mir das mal anschaun.
 

TheFrog

Aktives Mitglied
@Rindfleischüberwachung Ich hab schon ein paar Bücher der ... für Dummies-Reihe gelesen. Diese Bücher dienen leider oft nur als Einführung in die Thematik. Der Vorteil dieser Bücher ist natürlich, dass sie leichtverständlich sind.

Ein einziges Buch wird auch kaum alles einer Sprache abdecken können^^

Der erste Teil der Java Insel hat 1300 Seiten und dann gibt es noch einmal einen zweiten Teil mit 1400 Seiten ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Hilfe beim tablevies AWT, Swing, JavaFX & SWT 2
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
C Gesucht: Hilfe beim programmieren. AWT, Swing, JavaFX & SWT 1
C Hilfe beim programmieren mit studiumgebundenes Projekt AWT, Swing, JavaFX & SWT 1
A JavaFX Hilfe beim Design eines Quiz AWT, Swing, JavaFX & SWT 2
F Hilfe beim ausschalten von Robot AWT, Swing, JavaFX & SWT 7
S Hilfe beim Lernprozess von java3d AWT, Swing, JavaFX & SWT 20
K Swing Hilfe beim JTree! AWT, Swing, JavaFX & SWT 3
L Mein Kopf dreht sich... Brauche Hilfe beim GUI gestalten AWT, Swing, JavaFX & SWT 10
G Hilfe beim Erstellen eines eigenen Html-Editors! AWT, Swing, JavaFX & SWT 4
C Hilfe beim JFileChooser AWT, Swing, JavaFX & SWT 8
V Brauche Hilfe beim Steuern des Sichtbereiches eines JPanel AWT, Swing, JavaFX & SWT 2
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
JavaBeginner22 Button Hilfe AWT, Swing, JavaFX & SWT 0
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
senol JOptionPane hilfe!!! :(((( AWT, Swing, JavaFX & SWT 32
donnico2 Objekte in der GUI ausgeben mit Hilfe einer DAO AWT, Swing, JavaFX & SWT 1
J Swing Hilfe bei Layout AWT, Swing, JavaFX & SWT 2
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
F BorderLayout Hilfe bei Anzeige AWT, Swing, JavaFX & SWT 2
T Swing Hilfe - Selbst Informatik Lehrer konnte mir nicht weiter Helfen AWT, Swing, JavaFX & SWT 2
A Swing TicTacToe-Bitte um Hilfe AWT, Swing, JavaFX & SWT 32
T Bitte um Hilfe AWT, Swing, JavaFX & SWT 2
T Hilfe bei Code AWT, Swing, JavaFX & SWT 2
S Hilfe bei Java Gui Anfänger AWT, Swing, JavaFX & SWT 5
J Warum geht das nicht? if-else usw..... compilieren geht nicht -- HILFE!!! AWT, Swing, JavaFX & SWT 10
M Problem mit Layoutmanagern... Hilfe wäre sehr nett. AWT, Swing, JavaFX & SWT 2
T Hilfe was mus ich tun um das fertige JfxFenster zu sehen AWT, Swing, JavaFX & SWT 2
A hilfe für flowlayout AWT, Swing, JavaFX & SWT 6
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
V Swing Brauche Hilfe mit Label AWT, Swing, JavaFX & SWT 3
T Swing JTable Zeile mit ausgelesenen Werten mit Hilfe von einem Button hinzufügen AWT, Swing, JavaFX & SWT 1
H Swing Hilfe bei GUI AWT, Swing, JavaFX & SWT 4
T HILFE wie lösche ich gezeichnetes per tastendruck AWT, Swing, JavaFX & SWT 1
R Swing JOptionPane Fehlermeldung- bitte um Hilfe! AWT, Swing, JavaFX & SWT 4
Tausendsassa ImageIcon?! Hilfe! AWT, Swing, JavaFX & SWT 10
C Hilfe bei JSpinner und JList AWT, Swing, JavaFX & SWT 1
J GridBagLayout mit Hilfe einer For-Schleife befüllen AWT, Swing, JavaFX & SWT 1
M Hilfe bei Performanceverbesserung AWT, Swing, JavaFX & SWT 34
B Hilfe welches Layout brauch ich AWT, Swing, JavaFX & SWT 4
M SwingWorker Hilfe! AWT, Swing, JavaFX & SWT 10
K Swing Brauche Hilfe AWT, Swing, JavaFX & SWT 6
O AWT Performance und Bug behebung[brauche Hilfe] AWT, Swing, JavaFX & SWT 2
K Swing Konsolen Programm in GUI - Suche Hilfe bei Konsolenausgabe AWT, Swing, JavaFX & SWT 2
K Viele Textfield mit Hilfe eines MousListener leeren - möglich? AWT, Swing, JavaFX & SWT 8
I ausgewählte Zeile mit Hilfe der Tastatur löschen! AWT, Swing, JavaFX & SWT 3
Kenan89 Java FX GUI Hilfe für erste Java FX App AWT, Swing, JavaFX & SWT 8
B Rechteck Mit Hilfe Von Timeline, KeyFrames animieren AWT, Swing, JavaFX & SWT 3
J LayoutManager Hilfe bei Wahl des Layouts AWT, Swing, JavaFX & SWT 9
N Hilfe bei Memory-Spiel AWT, Swing, JavaFX & SWT 18
L Swing Hilfe bei JTabelModel gesucht AWT, Swing, JavaFX & SWT 4
B Hilfe zu JTable und JTabbedPane AWT, Swing, JavaFX & SWT 18
K Hilfe bei Labels AWT, Swing, JavaFX & SWT 3
T JLayeredPanel - Hilfe AWT, Swing, JavaFX & SWT 7
C Swing Hilfe bei umsetzung eines Stundenplans. AWT, Swing, JavaFX & SWT 7
N Hilfe bei Panels! AWT, Swing, JavaFX & SWT 11
F Swing Syntaxhighlighting Hilfe AWT, Swing, JavaFX & SWT 5
Jats Bitte um Hilfe bei JComboBox mit Array AWT, Swing, JavaFX & SWT 6
Jats Hilfe bei FocusListener für Taschenrechner AWT, Swing, JavaFX & SWT 4
N Swing nach Fensterrand Action ausführen? HILFE AWT, Swing, JavaFX & SWT 7
R Hilfe bei Bachelorrabeit. Seitenvorschau AWT, Swing, JavaFX & SWT 7
G Swing Hilfe-Fenster erstellen AWT, Swing, JavaFX & SWT 20
E LayoutManager Hilfe ein GridbagLayout!! AWT, Swing, JavaFX & SWT 7
K GUI-Hilfe für Anfänger AWT, Swing, JavaFX & SWT 15
J Schulprojekt und braucht hilfe AWT, Swing, JavaFX & SWT 54
G Hilfe! Command Pattern an easy ImageViewer? AWT, Swing, JavaFX & SWT 13
radiac Hilfe bei GUI AWT, Swing, JavaFX & SWT 22
N Hilfe bei erstellen eines Bibliotheksprogrammes AWT, Swing, JavaFX & SWT 15
H Swing Jtable wird nicht angezeigt..hilfe!! AWT, Swing, JavaFX & SWT 16
M DRINGEND HILFE TextPane RECHTSBÜNDIG AWT, Swing, JavaFX & SWT 2
B Swing Hilfe zu JTextField AWT, Swing, JavaFX & SWT 2
J Brauche ganz dringend Hilfe!!! AWT, Swing, JavaFX & SWT 5
V Bitte um Hilfe bei nem Taschenrechner AWT, Swing, JavaFX & SWT 8
F NullPointerException - HILFE!! AWT, Swing, JavaFX & SWT 20
G Hilfe!!!Sudoku AWT, Swing, JavaFX & SWT 19
M Swing JButton hilfe AWT, Swing, JavaFX & SWT 3
M brauche Hilfe um Einträge aus Jlist zu löschen AWT, Swing, JavaFX & SWT 4
Spin Hilfe - Erklärungsbedarf für Kreis AWT, Swing, JavaFX & SWT 5
O Bitte um Hilfe bei ComboBox in TableHeader AWT, Swing, JavaFX & SWT 9
M Erstellen eines Hilfe-Fenster bzw"Erste-Schritte" AWT, Swing, JavaFX & SWT 2
G Hilfe Meine JPanels verschwinden im Müll AWT, Swing, JavaFX & SWT 10
G Hilfe AWT, Swing, JavaFX & SWT 8
N ausrichtung Button - hilfe bitte AWT, Swing, JavaFX & SWT 2
T Hilfe zu Events? AWT, Swing, JavaFX & SWT 6
A Ini Datei Auswerten - HILFE! AWT, Swing, JavaFX & SWT 6
D Hilfe bei GUI-Elementen in Java AWT, Swing, JavaFX & SWT 9
D Grafikeinsteiger sucht/braucht Hilfe. Wäre Nett ! AWT, Swing, JavaFX & SWT 3
K Mein Informatikprojekt läuft aus dem Ruder Hilfe. F1 ^^ AWT, Swing, JavaFX & SWT 5
S Hilfe! Bekomme Daten nicht ausgelesen AWT, Swing, JavaFX & SWT 3
M hilfe! probleme mit meinem programm AWT, Swing, JavaFX & SWT 5
V Hilfe :( bekomme textarea nicht versetzt AWT, Swing, JavaFX & SWT 2
M Hilfe ich komme nicht an ein JTextArea AWT, Swing, JavaFX & SWT 4
J Hilfe CardLayout AWT, Swing, JavaFX & SWT 3
C Hilfe bei JInternalFrame AWT, Swing, JavaFX & SWT 6
G BubbleSort mit Hilfe einer Balkengrafik visualisieren AWT, Swing, JavaFX & SWT 9
G Leider trotz allem kein Icon :( Brauche Hilfe AWT, Swing, JavaFX & SWT 3
S sinuskurve hilfe! AWT, Swing, JavaFX & SWT 2
D JSplittPane - unsichtbarer Rahmen? hilfe ;) AWT, Swing, JavaFX & SWT 2
G Selbstprogrammierter Editor - brauche Hilfe AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben