Portal > Foren > Java > Desktop-Applikationen und Grafik > JFrame Inhalt beim Klick in der JMenuBar
Antwort
 
Themen-Optionen
Alt 04.03.2005, 10:46 Nach oben    #1
Maximum
Gast
 
Beiträge: n/a
Standard JFrame Inhalt beim Klick in der JMenuBar

Hallo
Ist jetzt vielleicht ne Anfängerfrage, aber ich weiß im Moment nicht weiter.

Ich habe ein JFrame, welches vorerst keinen Inhalt (außer der JMenuBar), sondern nur eine definierte Größe hat.
Nun möchte ich wenn man in der JMenuBar einen Menüpunkt klickt eine Reihe von schon existenten Elementen (JTestarea, JPanels mit Inhalt usw.) anzeigen lassen.
Meine erste Überlegung war alle Objekte im JFrame zu entfernen (JFrame.getContentPane().remove(int pos)) und die neuen hinzuzufügen.
Aber ich glaube das ist so nicht korrekt oder ?

Vielleicht kann mir ja Jemand einen korrekteren Weg aufzeigen.
Und vor allem einen der auch richtig funktioniert

Danke schon mal im Voraus
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.03.2005, 10:57 Nach oben    #2
Sym
Chefkoch-Mod
 
Benutzerbild von Sym
 
Registriert seit: 30.05.2004
Beiträge: 433
Standard

Hi,

bin gerade auf dem Sprung. Was mir jedoch direkt ins Auge stach, war die Nutzung Deines JFrames. Man arbeitet nicht direkt darauf, sonder auf der ContentPane, sprich
Code:
myJFrame.getContentPane().add(component)
bzw.
Code:
myJFrame.getContentPane().remove(component)
__________________
Denk mal darüber nach...

Lars

ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen.
www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de
Sym ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.03.2005, 11:12 Nach oben    #3
Maximum
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Sym
Hi,

bin gerade auf dem Sprung. Was mir jedoch direkt ins Auge stach, war die Nutzung Deines JFrames. Man arbeitet nicht direkt darauf, sonder auf der ContentPane, sprich
Code:
myJFrame.getContentPane().add(component)
bzw.
Code:
myJFrame.getContentPane().remove(component)
ich weiß so hab ich das auch gemacht (hab mich bloß verschrieben) bzw. würde das machen.
Jedoch weiß ich eben nicht ob dies so korrekt ist dem dem removen und dann wieder adden ..
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.03.2005, 11:13 Nach oben    #4
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 523
Standard

was spricht gegen removen (removeAll()) und wieder adden?
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.03.2005, 11:15 Nach oben    #5
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.110
Standard

Was spräche dagegen, mit setVisible zu arbeiten?
Das hinzufügen und entfernen könnte je nach LayoutManager ziehmlich problematisch werden.
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.03.2005, 11:57 Nach oben    #6
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 523
Standard

Zitat:
Zitat von TheDragonMaster
Was spräche dagegen, mit setVisible zu arbeiten?
Das hinzufügen und entfernen könnte je nach LayoutManager ziehmlich problematisch werden.
Auch ne Möglichkeit :rolleyes:
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.03.2005, 12:03 Nach oben    #7
Maximum
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von TheDragonMaster
Was spräche dagegen, mit setVisible zu arbeiten?
Das hinzufügen und entfernen könnte je nach LayoutManager ziehmlich problematisch werden.
Das Problem ist das die Komponenten Teil eines Spiels mit Statusmeldungen usw. sind und warscheindlich neu initialisiert werden müssen, da sonst alte Daten beim erneut starten des Spiels (über die Oberfläche bzw. JMenuBar) angezeigt werden würden.
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.03.2005, 17:04 Nach oben    #8
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.110
Standard

In dem Fall könntest du
a) Die Komponenten reinitialisieren, bzw. mit den neuen Daten füllen (aktualisieren)
b) Die Version von Hobbit nehmen
c) mir sagen, welchen LayoutManager du momentan verwendest.
Solltest du sowas wie GridBagLayout nehmen sollte es kein Problem sein, die Komponenten in einer anderen Reihenfolge wieder hinzuzufügen.
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2005, 18:00 Nach oben    #9
Maximum
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von TheDragonMaster
In dem Fall könntest du
a) Die Komponenten reinitialisieren, bzw. mit den neuen Daten füllen (aktualisieren)
b) Die Version von Hobbit nehmen
c) mir sagen, welchen LayoutManager du momentan verwendest.
Solltest du sowas wie GridBagLayout nehmen sollte es kein Problem sein, die Komponenten in einer anderen Reihenfolge wieder hinzuzufügen.
So ich hab jetzt folgendes programmiert :

PHP-Code:
    private JMenuBar createMenuBars(){
        
//Menubar hinzufügen
        
JMenuBar menuBar = new JMenuBar();
        
JMenu game = new JMenu("Spiel");
        
JMenu info = new JMenu("about");
        
        
JMenuItem newLocal = new JMenuItem("Neues Spiel");
        
JMenuItem exitGame = new JMenuItem("Beenden");
        
//        Actionlistener Registrieren
        
exitGame.addActionListener(new WindowClosing(this));
        
newLocal.addActionListener(
            new 
ActionListener(){

                public 
void actionPerformed(ActionEvent event) {
                    
MainFrame.getInstance().getContentPane().removeAll();
                    
setJMenuBar(createMenuBars());
                    
                    
//Anzeigen des Neues Spiel-Dialogs
                    
NewGameDialog newGame = new NewGameDialog(MainFrame.getInstance(),"Neues Spiel",true);
                    
newGame.setVisible(true);
                    
newGame.requestFocus();
                    
                    
//Hier wird dann entschieden welcher Controller mit
                    //welchen Werten instanziert wird
                    
                    
showGame(new Controller());
                    
MainFrame.getInstance().setVisible(true);
                }
                
            }
        );
        
        
game.add(newLocal);
        
game.addSeparator();
        
game.add(exitGame);
        
        
JMenuItem about = new JMenuItem("Über");
        
JMenuItem projectsite = new JMenuItem("Projektseite");
        
        
info.add(about);
        
info.add(projectsite);
        
        
menuBar.add(game);
        
menuBar.add(info);
        return 
menuBar;
    } 


showGame(new Controller()) added hierbei wieder alle Komponenten auf das MainFrame



PHP-Code:
public class NewGameDialog extends JDialog{
    
    
Container cpn this.getContentPane();
    
    public 
NewGameDialog(JFrame owner,String header,boolean modal){
        
super(owner,header,modal);
        
        
//Größe des Dialogs festlegen
        
Dimension dimdiag = new Dimension(600,400);
        
        
//Layoutmanager festlegen
        
cpn.setLayout(new GridLayout(3,1));
        
setSize(dimdiag);
    }


Das Problem ist nun das er nicht beim newGame.setVisible(true); ankommt und die gesamte Oberfläche abbricht. Die Instanz von NewGameDialog kann er jedoch anscheindend noch erstellen.

Woran liegt das und wie kann man das besser machen ? (bzw. funktionierend)
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.03.2005, 09:00 Nach oben    #10
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.110
Standard

Bekommst du irgendeine Fehlermeldung?
Ansonsten stecke einfach mal mit ein paar "System.out.println" die möglichen Abbruchstellen ab.
Also vor jedem Methodenaufruf so ein System.out.println("Und jetzt kommt Methode schlachmichtot");
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.03.2005, 17:12 Nach oben    #11
Maximum
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von TheDragonMaster
Bekommst du irgendeine Fehlermeldung?
Ansonsten stecke einfach mal mit ein paar "System.out.println" die möglichen Abbruchstellen ab.
Also vor jedem Methodenaufruf so ein System.out.println("Und jetzt kommt Methode schlachmichtot");
Wie gesagt :
Das Problem ist nun das er nicht beim newGame.setVisible(true); ankommt und die gesamte Oberfläche abbricht. Die Instanz von NewGameDialog kann er jedoch anscheindend noch erstellen.

Eine Exception oder eine Fehlermeldung erhalte ich nicht.
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
YAML, Inhalt links, Sidebar rechts, Inhalt vor Sidebar im Quelltext Ben HTML, XML und CSS 20 22.03.2007 18:26
[PHP] FTP-Funktionen in PHP nutzen MrNiceGuy Tutorials 0 24.05.2006 14:18
2. JFrame von 1. JFrame aus starten und schließen Lautsprecher Desktop-Applikationen und Grafik 5 15.11.2005 09:28
Inhalt von JFrame ändern sparrow Desktop-Applikationen und Grafik 14 20.10.2005 12:48
Inhalt in einer jComboBox alphabetisch sortieren Immi_Himself Desktop-Applikationen und Grafik 2 16.11.2004 15:40


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:23 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44