Swing Registrierte Knöpfe mit Bildern werden nicht angezeigt

90maam09

Neues Mitglied
Hey ihr,

ich habe das Problem, dass die Knöpfe mit den Bildern nicht geladen werden. Die Dateipfade sind richtig, da es mit nur einem Bild schon mal klappte, jetzt, nachdem ich zwei weitere hinzugefügt habe (insgesamt 4 neue Knöpfe) und sie registrierte, funktionierte das Programm nicht mehr, da es keine Knöpfe lädt.

Ich habe drei verschiedene Klassen:

Hauptklasse "Main.java":
Java:
package com.mathis.energiezimmer;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.*;

@SuppressWarnings("serial")
public class Main extends JFrame implements ActionListener, ItemListener {
    
    public static JFrame frame;
    public static JPanel panel;
    public static Container cp;
    
    public Main() {
        
        Container cp = getContentPane();
        cp.setLayout(null);
        cp.setVisible(true);
        Knöpfe.buttons();
        cp.add(Knöpfe.heizung);
        cp.add(Knöpfe.box1);
        cp.add(Knöpfe.box2);
        cp.add(Knöpfe.box3);
        cp.add(Knöpfe.box4);
        
        frame = new JFrame();
        frame.setLayout(new FlowLayout());
        frame.pack();
        frame.setVisible(true);
        frame.setExtendedState(Frame.MAXIMIZED_BOTH);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("Energiezimmer");
        frame.setResizable(false);
        frame.getContentPane().setBackground(Color.WHITE);
        
        Knöpfe.heizung.addActionListener(this);
        
    }

    public static void main(String[] args) {
        
        new Main();
        Hintergrund.background();
        frame.repaint();
        
    }
     
    public static Checkbox eins, zwei, drei, vier, fünf;

    @Override
    public void actionPerformed(ActionEvent e) {
        
         if(e.getSource() == Knöpfe.heizung) {
             
             JDialog heizung = new JDialog();
               CheckboxGroup cbg = new CheckboxGroup();
               
               eins = new Checkbox("Heizung durchgegend auf 5", cbg, false);
               zwei = new Checkbox("Heizung im Sommer auf 4", cbg, false);
               drei = new Checkbox("Heizung, wenn sie gebraucht wird, auf 2", cbg, false);
               vier = new Checkbox("Heizung immer auf 0", cbg, false);
               fünf = new Checkbox("Heizung im Winter auf 5, sonst nur auf 3", cbg, true);
               
               eins.addItemListener(this);
               zwei.addItemListener(this);
               drei.addItemListener(this);
               vier.addItemListener(this);
               fünf.addItemListener(this);
               
               heizung.add(eins);
               heizung.add(zwei);
               heizung.add(drei);
               heizung.add(vier);
               heizung.add(fünf);
             
             heizung.setLayout(new FlowLayout());
             heizung.pack();
             heizung.setVisible(true);
             heizung.setSize(975, 65);
             heizung.setLocationRelativeTo(getParent());
             heizung.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
             heizung.setTitle("Heizung");
             heizung.setResizable(false);
             heizung.getContentPane().setBackground(Color.LIGHT_GRAY);
                
             heizung.setLayout(null);
             
         }
        
    }

    @Override
    public void itemStateChanged(ItemEvent e) {
        
        if(e.getSource() == eins | e.getSource() == zwei | e.getSource() == vier | e.getSource() == fünf) {
            
            
            
        }
        
    }
    
}

Nebenklasse "Knöpfe.java"
Java:
package com.mathis.energiezimmer;

import java.awt.*;

import javax.swing.*;

public class Knöpfe {
    
    public static JButton heizung = new JButton();
    public static JButton fenster1 = new JButton();
    public static JButton fenster2 = new JButton();
    public static JButton lampe = new JButton();
    public static JButton wasserhahn = new JButton();
    public static JButton box1 = new JButton();
    public static JButton box2 = new JButton();
    public static JButton box3 = new JButton();
    public static JButton box4 = new JButton();
    
    public static void buttons() {
        
        Icon heizungIcon = new ImageIcon(System.getProperty("user.dir")+"/icon/heizung.jpg");
        Icon rotIcon = new ImageIcon(System.getProperty("user.dir")+"/farben/rot.jpg");
        Icon grünIcon = new ImageIcon(System.getProperty("user.dir")+"/farben/grün.jpg");
        
        heizung.setBackground(Color.white);
        heizung.setBorder(null);
        
        box1.setBackground(Color.white);
        box1.setBorder(null);
        
        box2.setBackground(Color.white);
        box2.setBorder(null);
        
        box3.setBackground(Color.white);
        box3.setBorder(null);
        
        box4.setBackground(Color.white);
        box4.setBorder(null);
        
        heizung.setIcon(heizungIcon);
        box1.setIcon(rotIcon);
        box2.setIcon(rotIcon);
        box3.setIcon(rotIcon);
        box4.setIcon(rotIcon);
        
        Knöpfe.heizung.setBounds(50, 375, 400, 250);
        Knöpfe.box1.setBounds(50, 50, 50, 50);
        Knöpfe.box2.setBounds(50, 105, 50, 50);
        Knöpfe.box3.setBounds(50, 160, 50, 50);
        Knöpfe.box4.setBounds(50, 215, 50, 50);
        
    }
    
}

Nebenklasse "Hintergrund.java":
Java:
package com.mathis.energiezimmer;

import javax.swing.*;

public class Hintergrund {
    
    public static void background() {
        
        JLabel lblNewLabel = new JLabel("");
        lblNewLabel.setIcon(new ImageIcon(System.getProperty("user.dir")+"/background/bg.jpg"));
        lblNewLabel.setSize(Main.frame.getWidth(), Main.frame.getHeight());
        Main.frame.getContentPane().add(lblNewLabel);
        Main.frame.repaint();
        
    }
    
}

Schon mal Danke im Vorraus, entweder irgendwas ist grundlegend falsch oder ich bin einfach zu blind ^^

Gruß Maam
 

javampir

Bekanntes Mitglied
hi,
funktioniert es noch, wenn du die neuen bilder wieder auskommentierst? bekommst du irgendwo eine exception?
javampir
 

90maam09

Neues Mitglied
Wenn ich sie ausklammer, funktioniert es jetzt auch nicht mehr. Eine Exception gibt es nicht, die Ränder von den Knöpfen werden auch nicht angezeigt, also werden die Knöpfe garnicht gezeigt
 

Enceladus271

Bekanntes Mitglied
In der main Methode erzeugst du eine Instanz der Main Klasse (in der die Buttons liegen), machst aber mit dieser Instanz gar nichts.
Das Fenster das angezeigt wird ist nicht die Main Instanz sondern das Fenster das du der static Variablen frame zugewiesen hast. Ich denke mal dass du dort eigentlich die Main Instanz speichern willst. Ersetze mal im Konstruktor
frame = new JFrame();
durch
frame = this;

Das ist die schnelle Lösung. Ich würde dir aber dringend raten den Code zu überarbeiten bevor du weitere Funktionalitäten hinzufügst. Du verstößt in deinem Code gegen alle Regeln der objektorientierten Programmierung:
1. Es wird viel zu viel mit static gearbeitet. Insbesondere sollte in keinem public Konstuktor eine static Variable gesetzt werden. Hier sollte besser das Singleton Pattern verwendet werden: Design Patterns Singleton Pattern
2. Die Buttons sollten in derjenigen Klasse liegen, in der sie gebraucht werden (Gilt nicht nur für Buttons, sondern eigentlich für alle Objekte).
3. Zuletzt sollten die Methoden einen aussagekräftigen Namen bekommen, also z.B. initButtons oder setupButtons statt einfach nur buttons(). Bei einer static void Methode die buttons() heißt weiß niemand was diese Methode macht und man muss immer erst in den Code gucken.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D JavaFX Alle Knöpfe auf die gleiche Größe AWT, Swing, JavaFX & SWT 14
Z GUI: Knöpfe erscheinen spät, Etiketten gar nicht AWT, Swing, JavaFX & SWT 3
Starchild Beliebig viele Knöpfe AWT, Swing, JavaFX & SWT 5
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
S NullPointer Exception beim Laden von Bildern AWT, Swing, JavaFX & SWT 11
R Liste mit Bildern AWT, Swing, JavaFX & SWT 3
B Swing Dynamische JList mit Bildern AWT, Swing, JavaFX & SWT 4
C 2D-Grafik Steganographie - Verschlüsselung von Dateien in Bildern - Bilder zeigen schwarze Rechtecke AWT, Swing, JavaFX & SWT 13
H Swing Menü mit Bildern AWT, Swing, JavaFX & SWT 2
M Applet mit Bildern AWT, Swing, JavaFX & SWT 2
A AWT Nach dem generieren von bildern verschwinden diese wieder AWT, Swing, JavaFX & SWT 9
T 2D-Grafik Rotieren von Bildern AWT, Swing, JavaFX & SWT 3
N Double Buffern von BILDERN AWT, Swing, JavaFX & SWT 6
K Überblenden von Bildern AWT, Swing, JavaFX & SWT 14
D Problem mit unterschiedlichen Ladezeiten von Bildern / Blockieren der UI AWT, Swing, JavaFX & SWT 5
R Problem beim Anzeigen von Bildern auf JInternalFrame AWT, Swing, JavaFX & SWT 6
G Wasserzeichen in Bildern feststellen AWT, Swing, JavaFX & SWT 6
M 2D-Grafik Offscreen-Rendern von Bildern AWT, Swing, JavaFX & SWT 2
B Zeichnen von Bildern auf JPanel aus eigenem Objekt AWT, Swing, JavaFX & SWT 19
S Ordner mit Bildern laden AWT, Swing, JavaFX & SWT 2
Hausmeister JTable mit Bildern - Performance AWT, Swing, JavaFX & SWT 5
M JTabel mit Bildern AWT, Swing, JavaFX & SWT 2
A SWT Table mit Bildern und Checkboxes AWT, Swing, JavaFX & SWT 4
T Dynamisches hinzufügen und entfernen von Bildern AWT, Swing, JavaFX & SWT 3
E AWT Kleine Hilfestellung bei Bildern in Mediatracker AWT, Swing, JavaFX & SWT 7
B Einfaches JScrollPane mit Bildern füllen AWT, Swing, JavaFX & SWT 2
S Fläche mit einzelnen Bildern erstellen AWT, Swing, JavaFX & SWT 3
M Schlechte Qualität beim skalieren von Bildern AWT, Swing, JavaFX & SWT 10
B Anzeigen von Bildern AWT, Swing, JavaFX & SWT 4
T Variable Menge an Bildern außerhalb paint() zeichnen? AWT, Swing, JavaFX & SWT 2
O Zwischen mehreren Bildern wechseln AWT, Swing, JavaFX & SWT 6
S Probl. bei Java Programm - Dialog zum Bearbeiten von Bildern AWT, Swing, JavaFX & SWT 4
M probs mit einbinden von bildern AWT, Swing, JavaFX & SWT 7
E JAR will nicht mit Bildern, Recherche im forum erfolglos AWT, Swing, JavaFX & SWT 3
R JPanel mit Bildern als jpg abspeichern AWT, Swing, JavaFX & SWT 9
G Problem mit dem Einbinden von bildern AWT, Swing, JavaFX & SWT 10
N Problem mit URL in Verbindung mit Bildern AWT, Swing, JavaFX & SWT 17
P Zwei Fragen zu Bildern in Applets AWT, Swing, JavaFX & SWT 2
M GUI mit Bildern AWT, Swing, JavaFX & SWT 3
M Aus Bildern teile herausschneiden AWT, Swing, JavaFX & SWT 13
T Problem beim Laden von Bildern AWT, Swing, JavaFX & SWT 14
E Probleme mit Pfadangaben bei Einfügen von Bildern (Eclipse) AWT, Swing, JavaFX & SWT 4
L Problem mit dem Übereinanderzeichnen von Bildern AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben