JPanel auf JFrame neu zeichnen

Riedelinho

Mitglied
Ich hab folgendes Problem:

Ich bin am GUI entwerfen für ein Programm und das PRoblem ist, dass wenn ich aus einem DropDown Menü einen Menüpunkt auswähle, er ein anderes Menü (das bisher aus testgründen aus buttons besteht) ändern bzw. neu zeichnen soll.

Java:
//Die linke SideBar
        JPanel sidebarleft = new SideBarLeft(1);
Hier wird die Sidebar mit den Anfangseinstellungen initialisiert (funktioniert auch soweit prima).

Java:
bausteineDropDown.addItemListener( new ItemListener() {
              public void itemStateChanged( ItemEvent e ) {
                JComboBox selectedChoice = (JComboBox)e.getSource();
                if ( selectedChoice.getSelectedItem().equals("Straße")){
                  System.out.println("klein");
                }
                else if (selectedChoice.getSelectedItem().equals("Fahrzeuge")){
                    System.out.println("test");
                    sidebarleft = new SideBarLeft(2);
                }
              }
            } );
        return bausteineDropDown;
Hier leg ich die benutzeroperationen fest, die passieren, wenn man einen entsprechenden Menüeintrag auswählt.

Java:
sidebarleft = new SideBarLeft(2);
Hier wird die neue sidebar initialisiert. Das System.out funktioniert auch prima an der stelle.
Nur mein Problem ist, wie zeichne ich jetz das Panel neu? Oder muss ich da komplette JFrame neuzeichnen?
ich hab es schon mit
Java:
sidebarleft.repaint()
versucht, aber ohne erfolg.
auch mit
Java:
.validate()
hat es irgendwie nicht funktioniert.
Kann mir jmd helfen und vielleicht sagen, wo mein Denkfehler ist?

Liebe Grüße
Riedelinho
 

Riedelinho

Mitglied
wenn ich
Java:
mainFrame.remove(sidebarleft);
hinter die initialisierung schreibe krieg ich eine
Java:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
was mach ich falsch?

Kompletter Code:

Java:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at view.GuiView$2.itemStateChanged(GuiView.java:123)
    at javax.swing.JComboBox.fireItemStateChanged(Unknown Source)
    at javax.swing.JComboBox.selectedItemChanged(Unknown Source)
    at javax.swing.JComboBox.setSelectedItem(Unknown Source)
    at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
    at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(Unknown Source)
    at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Das hieße ja, dass meine Componenten, die ich löschen will null ist oder?
aber ich hab sie doch initialisiert und sie wird doch sagar im frame richtig angezeigt...
 
Zuletzt bearbeitet:

DerEisteeTrinker

Bekanntes Mitglied
Nicht hinter der Initialisierung sondern davor.

Denn auf deinem Frame ist die Referenz auf das alte Panel hinterlegt und die Variable zeigt auch drauf. wenn du dem Frame dann sagst, dass er das Panel wegwerfen soll, nachdem du die Variable neu initialisiert hast, dann sucht er nach dem neuen Panel zu entfernen und das findet er natürlich nicht.

Sprich
1. Altes Panel löschen
2. Neues Panel initialisieren
3. Neues Panel hinzufügen zum Frame
4. Panel neu zeichnen
 

Riedelinho

Mitglied
ich hab da jetz folgenden code:
Java:
else if (selectedChoice.getSelectedItem().equals("Fahrzeuge")){
                    System.out.println("test");
                    mainFrame.remove(sidebarleft);
                    sidebarleft = new SideBarLeft(2);
                    addComponent(mainFrame, new GridBagLayout(), sidebarleft, 10, 2, 4, 2, 1, 1);
                    sidebarleft.repaint();

und kriege immer noch diese exception... :-/ und die taucht laut fehlermeldung, schon bei dem remove auf ???:L
 

VfL_Freak

Top Contributor
Moin,

ich hab da jetz folgenden code:
Java:
else if (selectedChoice.getSelectedItem().equals("Fahrzeuge")){
                    System.out.println("test");
                    mainFrame.remove(sidebarleft);
                    sidebarleft = new SideBarLeft(2);
                    addComponent(mainFrame, new GridBagLayout(), sidebarleft, 10, 2, 4, 2, 1, 1);
                    sidebarleft.repaint();

In welcher dieser Zeilen tritt denn die Exception genau auf ? ???:L
Etwa hier : "mainFrame.remove(sidebarleft);" ???:L
Dann wäre Dein "sidebarleft" in der Tat null und könnte auch in der Zeile nicht reinitialisiert werden!

Ich denke aber mal, das "Eisteetrinker " meinte, Du solltes ein NEUES Objekt initialisieren
Java:
jPanel mySidebarleft2 = new SideBarLeft(2);

Gruß
Klaus
 
Zuletzt bearbeitet:

Riedelinho

Mitglied
es tritt tatsächlich in der remove aktion auf:
Java:
mainFrame.remove(sidebarleft);
also müsste meine sidebar ja leer sein...
hab den rest vom code auch mal weggeschmissen, und der fehler ist definitiv an dieser stelle...
aber auch wenn ich die variable schon global initialisiere tritt dieser fehler auf ???:L
 

DerEisteeTrinker

Bekanntes Mitglied
Wenn du an der Stelle eine Nullpointer bekommst, dann solltest du überprüfen, ob du in der Variable die vormalige Referenz auf das Panel gespeichert hast. Die Variable zeigt ins Nirvana, weil du das Panel vllt setzt, aber nie in der Variable abspeicherst

Poste mal die Methoden bzw. Zeilen, wo du die Variable sidebarleft deklarierst und benutzt

@ VfL_Freak

er kann die Variable ruhig weiter benutzen, da brauch er keine extra Variable
 

Riedelinho

Mitglied
Java:
JPanel sidebarleft = null;
In der Klasse als globale Variable
Java:
JPanel sidebarleft = new SideBarLeft(1);
Hier als sie beim ersten aufruf der gui initialisiert wird
Java:
package view.panel;

import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JPanel;

public class SideBarLeft extends JPanel {

    public SideBarLeft(int i){
        
        GridLayout gl = new GridLayout(4,0);
        this.setLayout(gl);

        JButton button = null;
        JButton button2 = null;
        
        if (i == 1){
            button = new JButton("test 1.1");
            button2 = new JButton("test 1.2");
        }
        else if (i == 2){
            button = new JButton("test 2.1");
            button2 = new JButton("test 2.2");
        }
        else if (i == 3){
            button = new JButton("test 3.1");
            button2 = new JButton("test 3.2");
        }
        this.add(button);
        this.add(button2);
    }
}
und da die klasse die instanziiert wird...
 

Riedelinho

Mitglied
ok hab grad mim kumpel den fehler gefunden ^^

Java:
mainFrame = new JFrame();
war unteranderem mein fehler, dass ich in der init methode die variable nochmal angelegt hab und sie damit überschrieben habe ^^
mit der sidebar genau das gleiche, es haben also 2 wörter (JPanel und JFrame) zu dem umstand geführt ^^

danke euch trotzdem für die hilfen :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Zeichnen auf JPanel und in JFrame einfügen AWT, Swing, JavaFX & SWT 16
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
A Externes JFrame in ein JPanel AWT, Swing, JavaFX & SWT 5
O Swing Jpanel autom. auf JFrame Größe bringen AWT, Swing, JavaFX & SWT 6
B JFrame mit neuem JPanel überschreiben AWT, Swing, JavaFX & SWT 13
B Verschachtelte jframe oder jpanel mit backgrounds AWT, Swing, JavaFX & SWT 10
H Swing JFrame und JPanel Problematik AWT, Swing, JavaFX & SWT 9
G 2D-Grafik JFrame & JPanel im Vollbild AWT, Swing, JavaFX & SWT 2
M Swing Daten von JPanel zu JFrame senden AWT, Swing, JavaFX & SWT 13
M Swing Scrollbar im JFrame (JPanel?) AWT, Swing, JavaFX & SWT 6
P Problem beim erstellen eines JPanel in einem JFrame AWT, Swing, JavaFX & SWT 7
J JPanel vs JFrame Längeneinheit AWT, Swing, JavaFX & SWT 3
P nicht sichtbares JPanel / JFrame als Image speichern AWT, Swing, JavaFX & SWT 3
E JPanel in JFrame integrieren AWT, Swing, JavaFX & SWT 3
M JPanel an JFrame anpassen AWT, Swing, JavaFX & SWT 7
F jpanel oder jframe Formular AWT, Swing, JavaFX & SWT 4
C Swing JPanel Größe relativ zum JFrame AWT, Swing, JavaFX & SWT 9
V JFrame in JPanel positionieren AWT, Swing, JavaFX & SWT 5
A JFrame > JTabbedPane > JPanel > addKeyListener AWT, Swing, JavaFX & SWT 18
N JPanel zum JFrame hinzufügen AWT, Swing, JavaFX & SWT 9
C JFrame nach JPanel abfragen AWT, Swing, JavaFX & SWT 6
H Swing jpanel in jframe erzeugen und anzeigen AWT, Swing, JavaFX & SWT 5
R JFrame und JPanel - Unschönheiten AWT, Swing, JavaFX & SWT 6
G JFrame ohne JPanel AWT, Swing, JavaFX & SWT 5
thE_29 Bufferungsproblem JFrame/JPanel/ContentPane AWT, Swing, JavaFX & SWT 2
S JFrame-Klasse soll ein/mehrere Objekte einer JPanel-Klasse-& AWT, Swing, JavaFX & SWT 3
R per Mausclick JPanel tauschen in JFrame AWT, Swing, JavaFX & SWT 4
E JPanel aus auf dem JFrame AWT, Swing, JavaFX & SWT 6
M JScrollPane im JPanel im JFrame SWING AWT, Swing, JavaFX & SWT 4
G JFrame JPanel und Paint(Image)? AWT, Swing, JavaFX & SWT 6
G JFrame,JPanel,JTextField und KeyListener AWT, Swing, JavaFX & SWT 6
E Bestehende Anwendung erweitern ->JFrame in JPanel verpack AWT, Swing, JavaFX & SWT 4
T Editor auf Basis JFrame in ein JPanel wandeln - Problem! AWT, Swing, JavaFX & SWT 5
F Probleme bei add(Component) JPanel > JFrame AWT, Swing, JavaFX & SWT 3
P leidige Frage zum JPanel und zum JFrame AWT, Swing, JavaFX & SWT 6
G Probleme mit JProgressbar auf JPanel in JFrame AWT, Swing, JavaFX & SWT 6
G JPanel laedt nur bei JFrame Größenveränderung AWT, Swing, JavaFX & SWT 3
K jPanel in jFrame AWT, Swing, JavaFX & SWT 4
P JPanel in ein JFrame einfügen AWT, Swing, JavaFX & SWT 6
R NetBeans - JFrame und JPanel AWT, Swing, JavaFX & SWT 3
G Hintergrundbild auf JFrame oder JPanel AWT, Swing, JavaFX & SWT 3
A Swing JFrame / JPanel Grösse soll sich nach Inhalt richten. AWT, Swing, JavaFX & SWT 2
G JFrame auf JFrame oder JPanel auf JFrame AWT, Swing, JavaFX & SWT 1
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
XWing Basic JPanel mit 2 Buttons beutzen. AWT, Swing, JavaFX & SWT 10
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
M clear JPanel before repainting AWT, Swing, JavaFX & SWT 1
B ImageIcon auf JPanel austauschen AWT, Swing, JavaFX & SWT 3
T Swing Reload JPanel + darin liegende ProgressBar AWT, Swing, JavaFX & SWT 9
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
F JPanel Celleditor AWT, Swing, JavaFX & SWT 8
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
Ich lerne Java. Swing Von JPanel A auf JPanel B zugreifen. AWT, Swing, JavaFX & SWT 4
A JPanel austauschen und Focus geben AWT, Swing, JavaFX & SWT 3
E Auf JPanel malen und davor JComponenten anzeigen AWT, Swing, JavaFX & SWT 12
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
B Verschiebbares JPanel "ruckelt" im Randbereich AWT, Swing, JavaFX & SWT 2
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
Hatsi09 Swing JPanel Bild einfügen AWT, Swing, JavaFX & SWT 14
L JPanel zeigt keinen Inhalt AWT, Swing, JavaFX & SWT 1
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
E Hintergrundfarbe setzen in JPanel funktioneirt nicht AWT, Swing, JavaFX & SWT 4
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
D Platzierung von JTextfield in JPanel AWT, Swing, JavaFX & SWT 3
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
M Zwei JPanel übereinander nur vorderes "repainten" AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Button lässt sich nicht auf dem JPanel verschieben AWT, Swing, JavaFX & SWT 5
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel wird in JScollPane nicht angezeigt AWT, Swing, JavaFX & SWT 2
it_is_all JPanel verschwindet nach Button-Klick AWT, Swing, JavaFX & SWT 2
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
F Screenshot eines JPanel AWT, Swing, JavaFX & SWT 3
S JPanel rotieren, Bild ist abgeschnitten, Clipping? AWT, Swing, JavaFX & SWT 0
M Swing JPanel flüssig verschieben AWT, Swing, JavaFX & SWT 5
G Nur ein JPanel wird angezeigt AWT, Swing, JavaFX & SWT 9
kilopack15 JPanel im laufenden Zustand einfärben AWT, Swing, JavaFX & SWT 2
kilopack15 JPanel Farbverwaltung AWT, Swing, JavaFX & SWT 1
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
L JPanel zeichnet im Konstrukter erzeugten Hintergrund nicht AWT, Swing, JavaFX & SWT 10
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben