Panel in GUI laden?

Status
Nicht offen für weitere Antworten.

FeelX

Mitglied
Ich habe zwei Klassen, einmal für die GUI und einmal fürs Panel. Nun will ich auf Knopfdruck das Panel in der GUI laden.

Code:
else if (cmd.equals("Übersicht"))
        {
            ÜbersichtPanel panelU = new ÜbersichtPanel();
            panelU.setBackground(Color.black);
            panelU.setBounds(40,110,310,250);
            this.add(panelU);

        }

Leider kommt dann immer die Fehlermeldung:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: adding a window to a container
+ noch viel mehr Text, aber ich denke in dieser Zeile liegt das Problem.

Was muss ich anders machen?[/i]
 

thE_29

Top Contributor
Schwer zu sagen, ohne die Klasse ÜbersichtPanel zu kennen!

Desweiteren BITTE BITTE verwende keine Ü,ö, etc im Klassennamen! Es ist zwar toll, das java sowas kann, aber tus bitte nicht!!!

Laut der Exception ist das ÜbersichtPanel eigentlich ein JDialog/JFrame oder JWindow und das kann man nicht auf ein Panel/JFrame/JDialog/JWindow, etc.. adden. Kann das sein?
 

FeelX

Mitglied
also mir wurde erzählt (u.a. auch von meinem Lehrer), dass das funktionieren müsste...
Es klappt auch wenn GUI und das Panel in einer Klasse sind, aber ich würde das gerne der Übersicht halber getrennt haben.
 

FeelX

Mitglied
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class GUI extends JFrame implements ActionListener  {

    private JTextField tGeld;
    private JTextField tOrangen;
    private JTextField tZucker;
    private JTextField tBecher;
    private JTextField tRuf;
    private UbersichtPanel panelU = new UbersichtPanel();
    private Speichern speichern = new Speichern();
    private Spieler spieler = new Spieler();

    public GUI() {

        super("Orange Tycoon");
        Container cp = new Container()
        {
          public void paint(Graphics g)
          {
            Image pic = Toolkit.getDefaultToolkit().getImage( "Images/gui.gif" );
            g.drawImage(pic,0,0,650,400, this);
            super.paint(g);
          }
        };
        this.getContentPane().setLayout(null);
        this.setContentPane(cp);

        // GeldAnzeige
        // Textfeld Geld
        tGeld = new JTextField (20);
        tGeld.setBounds (455, 195, 50, 30);
        tGeld.setEditable(false);
        tGeld.setText(""+spieler.getGeld());
        this.getContentPane().add (tGeld);
        // Geld-Label
        JLabel lGeld = new JLabel(new ImageIcon ("Images/Dollar.gif"));
        lGeld.setBounds(390, 200, 100, 20);
        this.getContentPane().add (lGeld);
        
        // WarenAnzeige
        // Textfeld Orangen
        tOrangen = new JTextField (20);
        tOrangen.setBounds (555, 195, 50, 30);
        tOrangen.setEditable(false);
        tOrangen.setText(""+spieler.getOrangen());
        this.getContentPane().add (tOrangen);
        // Orangen-Label
        JLabel lOrangen = new JLabel(new ImageIcon ("Images/Orange.gif"));
        lOrangen.setBounds(490, 200, 100, 20);
        this.getContentPane().add (lOrangen);
        
        // Textfeld Zucker
        tZucker = new JTextField (20);
        tZucker.setBounds(455, 230, 50, 30);
        tZucker.setEditable(false);
        tZucker.setText(""+spieler.getZucker());
        this.getContentPane().add (tZucker);
        // Zucker-Label
        JLabel lZucker = new JLabel(new ImageIcon ("Images/Zucker.gif"));
        lZucker.setBounds(390, 235, 100, 20);
        this.getContentPane().add (lZucker);
        
        // Textfeld Becher
        tBecher = new JTextField (20);
        tBecher.setBounds (555, 230, 50, 30);
        tBecher.setEditable(false);
        tBecher.setText(""+spieler.getBecher());
        this.getContentPane().add (tBecher);
        // Becher-Label
        JLabel lBecher = new JLabel(new ImageIcon ("Images/Becher.gif"));
        lBecher.setBounds(490, 235, 100, 20);
        this.getContentPane().add (lBecher);
        
        // Label Wetter
        JLabel lWetter = new JLabel("Wetter nächste Runde");
        lWetter.setBounds (455, 100, 150, 30);
        this.getContentPane().add (lWetter);
        // Laber Wetterbild
        JLabel lWetterBild = new JLabel("Bild");
        lWetterBild.setBounds(500, 140, 100, 20);
        this.getContentPane().add (lWetterBild);
        
        //Ruf
        // Textfeld Beliebtheit
        tRuf = new JTextField (20);
        tRuf.setBounds (420, 305, 62, 30);
        tRuf.setEditable(false);
        tRuf.setText(""+spieler.getBeliebtheit());
        this.getContentPane().add (tRuf);
        // Beliebtheit-Label
        JLabel lRuf = new JLabel("Beliebtheit:");
        lRuf.setBounds(420, 280, 100, 20);
        this.getContentPane().add (lRuf);
        
        // Label Tendenz
        JLabel lTendenz = new JLabel("Tendenz:");
        lTendenz.setBounds (550, 280, 100, 20);
        this.getContentPane().add (lTendenz);
        // Laber TendenzBild
        JLabel lTendenzBild = new JLabel("Bild");
        lTendenzBild.setBounds(560, 305, 100, 20);
        this.getContentPane().add (lTendenzBild);

        //Hauptmenü
        JButton bMenu = new JButton("Menu", new ImageIcon("Images/transparent.gif"));
        bMenu.setBounds (375, 10, 270, 72);
        bMenu.setContentAreaFilled(false);
        bMenu.setOpaque(false);
        bMenu.setBorderPainted(false);
        bMenu.addActionListener(this);
        this.getContentPane().add(bMenu);
        
        //Übersicht
        JButton bUbersicht = new JButton("Übersicht", new ImageIcon("Images/transparent.gif"));
        bUbersicht.setBounds (10, 12, 94, 50);
        bUbersicht.setContentAreaFilled(false);
        bUbersicht.setOpaque(false);
        bUbersicht.setBorderPainted(false);
        bUbersicht.addActionListener(this);
        this.getContentPane().add(bUbersicht);
        
        //Window-Listener
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent event){
               setVisible(false);
               dispose();
               System.exit(0);
            }
         });
    }

    public void actionPerformed(ActionEvent event){
        String cmd = event.getActionCommand();

        if (cmd.equals("Menu"))
        {
            Menu wndMenu = new Menu();

            int width = 250;
            int height = 300;

            Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
            int x = (d.width/2)-(width/2);
            int y = (d.height/2)-(height/2);

            wndMenu.setBounds(x,y,width,height);
            wndMenu.setUndecorated(true);
            wndMenu.setResizable(false);
            wndMenu.setVisible(true);
        }
        else if (cmd.equals("Übersicht"))
        {
            panelU = new UbersichtPanel();
            panelU.setBackground(Color.black);
            panelU.setBounds(40,110,310,250);
            this.add(panelU);
        }
    }
}

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class UbersichtPanel extends JFrame implements ActionListener{

    public UbersichtPanel() {

        JPanel panel = new JPanel();
        panel.setBounds(40,110,310,250);
        panel.setOpaque(false);
        panel.setBackground(Color.black);


        //Window-Listener
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent event){
               setVisible(false);
               dispose();
               System.exit(0);
            }
         });
    }
    
    public void actionPerformed(ActionEvent event){
        String cmd = event.getActionCommand();

        if (cmd.equals(""))
        {

        }
    }

}

Das sind die beiden Klassen um die es geht. Ich möchte halt gerne, dass ich in der Klasse GUI so ein Übersichts Panel starten bzw benutzen kann.
 
G

Gast2

Gast
ja du kannst kein frame auf ein frame packen du musst schon ein panel benutzen

wenn du es UbersichtPanel nennst solltest du vielleicht auch extend JPanel machen
und das innere panel weglassen
 
G

Gast2

Gast
was genau hast du verändert???und wie sieht der code jetzt aus ???und was für eine exception kommt???fragen über fragen....
 

FeelX

Mitglied
der code sieht jetzt so aus:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class UbersichtPanel extends JPanel implements ActionListener{

    public UbersichtPanel() {
    
        this.setBounds(220,305,330,260);
        this.setBackground(Color.black);

        //Window-Listener
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent event){
               setVisible(false);
               dispose();
               System.exit(0);
            }
         });
    }
    
    public void actionPerformed(ActionEvent event){
        String cmd = event.getActionCommand();

        if (cmd.equals(""))
        {

        }
    }

}

jetzt mecker er anscheinend am window-listener rum...

UbersichtPanel.java:27:16: cannot find symbol
symbol: method dispose()
dispose();
^
UbersichtPanel.java:24:9: cannot find symbol
symbol : method addWindowListener(<anonymous java.awt.event.WindowAdapter>)
location: class UbersichtPanel
addWindowListener(new WindowAdapter() {
 

vdvaart23

Mitglied
FeelX hat gesagt.:
jetzt mecker er anscheinend am window-listener rum...

UbersichtPanel.java:27:16: cannot find symbol
symbol: method dispose()
dispose();
^
UbersichtPanel.java:24:9: cannot find symbol
symbol : method addWindowListener(<anonymous java.awt.event.WindowAdapter>)
location: class UbersichtPanel
addWindowListener(new WindowAdapter() {

1) Die Klasse WindowAdapter enthält keine Methode dispose()...
2) Benutz doch einfach
Code:
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
statt einem WindowListener

Lg,
vdvaart23
 
G

Gast2

Gast
1. wenn du System.exit(0) machst bruachst du kein setVisible false und kein dispose()...
Des weiteren schließt du nicht dein JPanel sondern deine ganzes Frame auf dem das JPanel geaddet ist d.h. du brauchst keinen WindowsListener auf deinem Panel
 

vdvaart23

Mitglied
SirWayne hat gesagt.:
Des weiteren schließt du nicht dein JPanel sondern deine ganzes Frame auf dem das JPanel geaddet ist d.h. du brauchst keinen WindowsListener auf deinem Panel

Stimmt das hatte ich übersehen.
Also das setDefaultCloseOperation() auf das JFrame anwenden

Lg,
vdvaart23
 

FeelX

Mitglied
soweit so gut, jetzt müsst ich nur noch wissen was ich in die Klasse der GUI schreiben muss, damit das Panel angezeigt werden kann :oops:
 
G

Gast2

Gast
getContentPane.add(übersichtspanel);
und wenn du ein nullLayout hast dann musst du natürlich die Position und eine größe angeben
 

thE_29

Top Contributor
<ot> Sag mal was für Lehrer/Professoren habt ihr in letzter Zeit auf euren UNI´s? Entweder passt ihr/du net gut auf oder die verzapfen zT einfach nur Bullshit</ot>
 

FeelX

Mitglied
nee nicht uni, ist jgst 12 aufm gymnasium :wink:
aber so richtig was lernen tun wir trotzdem nicht :roll:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Swing Bei Button Click neues Panel laden AWT, Swing, JavaFX & SWT 3
E Swing Panel neu laden /neu zeichnen AWT, Swing, JavaFX & SWT 4
Dit_ Mit Button "Weiter" neues Panel laden, altes ausblenden... AWT, Swing, JavaFX & SWT 4
B Wie Panel neu Laden/Malen/Aktualisieren AWT, Swing, JavaFX & SWT 14
T Image laden im Panel ? AWT, Swing, JavaFX & SWT 16
T Anderes Panel nach Button-Klick laden AWT, Swing, JavaFX & SWT 9
L paintComponent in Panel eines Borderlayouts hinzufügen AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
CptK Ordentlicher Code & Panel ab bestimmter Komponentenzahl scrollbar machen AWT, Swing, JavaFX & SWT 12
B JTextField in Panel positionieren AWT, Swing, JavaFX & SWT 1
R Swing Panel nur bei Maus sichtbar AWT, Swing, JavaFX & SWT 2
B mit Maus verschiebbares Panel AWT, Swing, JavaFX & SWT 2
S Labels in Panel erstellen AWT, Swing, JavaFX & SWT 1
H Aus Array Container Panel an Tabbedpane zuweisen AWT, Swing, JavaFX & SWT 29
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
O Kann kei neues Panel zum zeichnen aufrufen... AWT, Swing, JavaFX & SWT 4
J Overlay Panel statt neues Fenster AWT, Swing, JavaFX & SWT 6
CptK Swing DropdownMenu über Panel-Grenzen hinaus anzeigen AWT, Swing, JavaFX & SWT 1
J Aufklappbares Panel in Toolbar AWT, Swing, JavaFX & SWT 6
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
S Swing Panel übernimmt komponenten von anderem AWT, Swing, JavaFX & SWT 7
J Panel auf Frame positionieren AWT, Swing, JavaFX & SWT 9
J JFrame Panel hinzufügen AWT, Swing, JavaFX & SWT 10
B AWT Panel größe im BorderLayout einstellen AWT, Swing, JavaFX & SWT 1
K Swing Entfernen von Panel funktioniert nicht AWT, Swing, JavaFX & SWT 5
L JavaFX Animation für Panel wechsel AWT, Swing, JavaFX & SWT 3
L Swing JTable im Panel darstellen AWT, Swing, JavaFX & SWT 8
L JavaFX Klickverhalten bei einem Panel AWT, Swing, JavaFX & SWT 1
A Swing Panel mit ScrollBar AWT, Swing, JavaFX & SWT 7
K Panel verdeckt MenuItem AWT, Swing, JavaFX & SWT 5
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
N Swing Label auf Panel legen.. AWT, Swing, JavaFX & SWT 2
J Panel auf Frame löschen und neues Panel Hinzufügen AWT, Swing, JavaFX & SWT 4
T Swing Graphics auf Panel AWT, Swing, JavaFX & SWT 2
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
U Java FX Zusätzliches Label per Knopfdruck während der Laufzeit auf Panel einfügen. AWT, Swing, JavaFX & SWT 2
P AWT Panel überschreibt vorheriges... AWT, Swing, JavaFX & SWT 2
Thallius Swing Warum kann man Texte im Panel nicht markieren? AWT, Swing, JavaFX & SWT 1
S NetBeans, Panel in Frame einfügen AWT, Swing, JavaFX & SWT 3
M AWT Panel wird nicht angezeigt AWT, Swing, JavaFX & SWT 7
P Fenstergröße ändern, Panel soll gleich bleiben AWT, Swing, JavaFX & SWT 2
M JavaFX Slide Panel AWT, Swing, JavaFX & SWT 2
P Swing Panel nicht sichtbar AWT, Swing, JavaFX & SWT 1
M Swing JtextField Panel in ander Panel aufrufen AWT, Swing, JavaFX & SWT 0
M Panel in geerbter JFrame Klasse adden AWT, Swing, JavaFX & SWT 4
S ScrollPane in Textarea und auf Panel AWT, Swing, JavaFX & SWT 4
D Panel wird nicht angezeigt und Fragen zum CardLayout AWT, Swing, JavaFX & SWT 6
S Swing JMenu löscht auf panel gezeichnetes AWT, Swing, JavaFX & SWT 3
X Java Panel zeitweise repainten AWT, Swing, JavaFX & SWT 8
X Panel Probleme (Tetris) AWT, Swing, JavaFX & SWT 8
W Swing Nicht-Editierbares Textfeld in Panel in ScrollPane AWT, Swing, JavaFX & SWT 9
B zweidimensionales Buttonarray auf Panel AWT, Swing, JavaFX & SWT 11
F JAVA-EDITOR: Panel in Frame aufnehmen AWT, Swing, JavaFX & SWT 3
F textarea lässt panel verschwinden AWT, Swing, JavaFX & SWT 4
T LayoutManager GridLayout panel.setSize funktioniert nicht AWT, Swing, JavaFX & SWT 1
A Panel lässt sich nicht bewegen AWT, Swing, JavaFX & SWT 2
E Panel mit Leben füllen AWT, Swing, JavaFX & SWT 2
K Swing Maus in Panel einsperren AWT, Swing, JavaFX & SWT 8
D Panel in Panel zentriert nicht richtig AWT, Swing, JavaFX & SWT 3
P Swing Panel-austausch über einen MenuListener AWT, Swing, JavaFX & SWT 2
1 Swing Bestimme ob ein Subelement eines panel den Fokus verloren hat AWT, Swing, JavaFX & SWT 2
P Swing Button über gesamtes Panel AWT, Swing, JavaFX & SWT 2
O LayoutManager Panel in Panel "maximieren" AWT, Swing, JavaFX & SWT 2
C AWT Horizontale Linie in einem Panel AWT, Swing, JavaFX & SWT 12
T Über mehrere Panel zeichnen AWT, Swing, JavaFX & SWT 2
B Export eines Panel mit ScrollBar AWT, Swing, JavaFX & SWT 4
S Größe von Panel verändern welches auf anderem Panel sitzt AWT, Swing, JavaFX & SWT 10
bluerob Panel im BorderLayout South wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
M Swing Panel klassenübergreifend ändern AWT, Swing, JavaFX & SWT 6
M Swing JFrame in einem Panel zeichnen AWT, Swing, JavaFX & SWT 3
A 2D-Grafik Panel inhalt löschen AWT, Swing, JavaFX & SWT 5
H Scroll Panel wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 6
S Elemente im Panel in richtige Ausgangsstellung bringen AWT, Swing, JavaFX & SWT 10
X Swing Panel Extra Klasse & Aufruf über Button AWT, Swing, JavaFX & SWT 18
Kenan89 2D-Grafik paintComponent quetsch alles in Panel AWT, Swing, JavaFX & SWT 26
C Bild auf Panel vergrößern und verschieben AWT, Swing, JavaFX & SWT 4
C ImageIcon eines Labels auf einem Panel in neuem Fenster anzeigen AWT, Swing, JavaFX & SWT 2
H LayoutManager Panel verschieben sich AWT, Swing, JavaFX & SWT 5
O Swing JTree um Label (oder Panel) erweitern AWT, Swing, JavaFX & SWT 9
S Vaadin: Panel AWT, Swing, JavaFX & SWT 10
R paintComponent malt bei repaint() Rahmen um Panel AWT, Swing, JavaFX & SWT 7
C Etwas durchsichtig machen über einem Panel AWT, Swing, JavaFX & SWT 7
K Panel zu Laufzeit ändern AWT, Swing, JavaFX & SWT 6
T eigene Klasse für Panel AWT, Swing, JavaFX & SWT 9
D Panel aus externer Klasse holen AWT, Swing, JavaFX & SWT 2
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
T Listener in anderen Panel deaktivieren AWT, Swing, JavaFX & SWT 3
H Verschiedene JPanels aus eigenen Klassen in JFrame einfügen, nur ein Panel sichtbar AWT, Swing, JavaFX & SWT 4
GUI-Programmer Informations-Panel an Label AWT, Swing, JavaFX & SWT 2
U Elemente im Panel zentrieren mit GridLayout AWT, Swing, JavaFX & SWT 3
J JPanel mit anderem Panel aus anderer Klasse setzen AWT, Swing, JavaFX & SWT 4
F 2D-Grafik Panel-Zeichnung erscheint nicht AWT, Swing, JavaFX & SWT 7
S Panel rapaint AWT, Swing, JavaFX & SWT 18
T AffineTransform wirkt sich nur auf dem ersten Panel aus AWT, Swing, JavaFX & SWT 3
K Swing: Panel in Panel erzeugen AWT, Swing, JavaFX & SWT 11
M Panel in SWT einfügen AWT, Swing, JavaFX & SWT 12
T auf Panel zeichnen AWT, Swing, JavaFX & SWT 4
A FormLayout Panel-Breite AWT, Swing, JavaFX & SWT 7
Dit_ "Expandable" Panel ? AWT, Swing, JavaFX & SWT 6
A Panel-Unterklasse funktioniert nicht AWT, Swing, JavaFX & SWT 16

Ähnliche Java Themen

Neue Themen


Oben