Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Sers ich habe mir mal ne kleine oberfläche mit Swing gebastelt aber ich komme nicht dahinter wie ich wenn ich auf dnen menü punkt neu gehe dafür sorge das anstadt dem wilkommens text ein formular erscheint kann da vieleicht einer mal nen beispiel progen oder vieleicht hat ja einer ein hier mal meine Sourcen.

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;

public class Listing3608 extends JFrame

implements ActionListener

{

public Listing3608()

{

super("Swing-Menütest");

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent event) {

System.out.println("Programm wird geschlossen...");

dispose();

System.exit(0);

}

}

);

Container cp = getContentPane();

cp.setLayout(new GridLayout(5,2));

JLabel label;

label = new JLabel("Test");

cp.add(label);

JMenuBar menubar = new JMenuBar();

menubar.add(createFileMenu());

setJMenuBar(menubar);

}

//Private Methoden

private JMenu createFileMenu()

{

JMenu ret = new JMenu("Datei");

ret.setMnemonic('D');

JMenuItem mi;

//Neu

mi = new JMenuItem("Neu", 'n');

setCtrlAccelerator(mi, 'N');

mi.addActionListener(this);

ret.add(mi);

//Öffnen

mi = new JMenuItem("Öffnen", 'f');

setCtrlAccelerator(mi, 'O');

mi.addActionListener(this);

ret.add(mi);

//Speichern

mi = new JMenuItem("Speichern", 'p');

setCtrlAccelerator(mi, 'S');

mi.addActionListener(this);

ret.add(mi);

//Separator

ret.addSeparator();

//Beenden

mi = new JMenuItem("Beenden", 'e');

mi.addActionListener(this);

ret.add(mi);

return ret;

}

private void setCtrlAccelerator(JMenuItem mi, char acc)

{

KeyStroke ks = KeyStroke.getKeyStroke(

acc, Event.CTRL_MASK

);

mi.setAccelerator(ks);

}

public void actionPerformed(ActionEvent event)

{

String cmd = event.getActionCommand();

if (cmd.equals("Beenden"))

{

System.out.println("Programm wird geschlossen...");

dispose();

System.exit(0);

}

else if (cmd.equals("Neu"))

{

System.out.println("Neu");

}

else if (cmd.equals("Öffnen"))

{

System.out.println("Oeffnen");

}

else if (cmd.equals("Speichern"))

{

System.out.println("Speichern");

}

}

public static void main(String[] args)

{

Listing3608 frame = new Listing3608();

frame.setLocation(100, 100);

frame.setSize(300, 200);

frame.setVisible(true);

}

}

Geschrieben

Hi,

das "Geheimnis" liegt hier


  public void actionPerformed(ActionEvent event) {

        String cmd = event.getActionCommand();

        if (cmd.equals("Beenden")) {

            System.out.println("Programm wird geschlossen...");

            dispose();

            System.exit(0);

        }

        else if (cmd.equals("Neu")) {

            System.out.println("Neu");

        }

        else if (cmd.equals("Öffnen")) {

            System.out.println("Oeffnen");

        }

        else if (cmd.equals("Speichern")) {

            System.out.println("Speichern");

        }


    }

Hier wird sozusagen festgelegt, was passiert wenn ein MenuEintrag gewählt wird. Wenn Du also System.out.println("Oeffnen"); durch einen Aufruf für ein neues JFrame erstetzt, erscheint das Frame. Heißt die Klasse mit dem neuen JFrame z.B. myJFrame müsstest Du hier new myFrame().show() einstetzen. show() allerdings nur wenn die Klasse die Methode show() auch hat!

Wenn Du im aktuellen Frame den inhalt ändern willst, dann ist das ganze ein bisserl komplizierter... aber es geht auch... dich würde dann mit "vorgefertigten" JPanels arbeiten und dann nur das jeweilige JPanel laden.

Geschrieben

Eventuell, wenn Du mir vorher genau sagen kannst wie du's brauchst. Soll ein neues Fenster auf gehen (und das alte verschwinden oder bleiben) oder der inhalt des aktuellen Fensters sich ändern?

Also ne genaue Beschreibung....dann kann ich ja mal schaun. Mir ist eh gerade langweilig :P

Geschrieben

Also hier ein kleines CodeBeispiel! Eines vorweg, es ist teilweise nicht sehr elegant, und ich habe auch wenig kommentiert, aber eigentlich solltest Du es lesen können....wenn Du das vorherige Verstanden hast. Compiliere es mal und sieh Dir an ob Du es so willst. Natürlich können die JPanels auch mehr als nur ein JLabel enthalten. Aber das ist ja eine andere Sache.

Es gibt noch eine möglichkeit, die IIRC über das Toolkit läuft, aber so ganz genau kann ich mich daran nix mehr erinnern. Hatte ich mal in einem Kundenverwaltung/Rechnungsschreibe-Programm benutzt.



import java.awt.*;

import java.awt.event.*;


import javax.swing.*;


public class dtwn extends JFrame {


    private JMenuBar jmb;

    private JMenu jm;

    private JMenuItem jmi;

    private JPanel jpstart;

    private JPanel jpd;

    private JPanel jpt;

    private JPanel jpw;

    private JPanel jpn;

    private JPanel jpword;

    /** Creates a new instance of dtwn */

    public dtwn() {

        super("4DTWN");

        initFrm();

        crtMenu();

        crtFrm();

    }



    private void crtMenu() {

        jmb = new JMenuBar();

        jm = new JMenu("RULEZ!");


        jmi = new JMenuItem("D");

        jmi.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent ae) {

                showD();

            }

        });

        jm.add(jmi);


        jmi = new JMenuItem("T");

        jmi.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent ae) {

                showT();

            }

        });

        jm.add(jmi);



        jmi = new JMenuItem("W");

        jmi.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent ae) {

                showW();

            }

        });

        jm.add(jmi);


        jmi = new JMenuItem("N");

        jmi.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent ae) {

                showN();

            }

        });

        jm.add(jmi);


        jmi = new JMenuItem("Word");

        jmi.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent ae) {

                showWord();

            }

        });

        jm.add(jmi);

        jm.addSeparator();

        jmi = new JMenuItem("Und wech");

        jmi.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent ae) {

                extApp(); //der war gut 

            }

        });

        jmb.add(jm);

    }


    private void showD() {

     getContentPane().removeAll();

     getContentPane().repaint();

     getContentPane().add(jpd);

     show();

    }


    private void showT() {

     getContentPane().removeAll();

     getContentPane().repaint();

     getContentPane().add(jpt);

     show();

    }


    private void showW() {

     getContentPane().removeAll();

     getContentPane().repaint();

     getContentPane().add(jpw);

     show();

    }


    private void showN() {

     getContentPane().removeAll();

     getContentPane().repaint();

     getContentPane().add(jpn);

     show();

    }


    private void showWord() {

     getContentPane().removeAll();

     getContentPane().repaint();

     getContentPane().add(jpword);

     show();

    }


    private void crtFrm() {

     setJMenuBar(jmb);   


     jpstart = new JPanel();

     jpstart.add(new JLabel("Los gehts. Wähle einen Menupunkt", JLabel.CENTER), BorderLayout.CENTER);

     jpd = new JPanel();

     jpd.add(new JLabel("D", JLabel.CENTER), BorderLayout.CENTER);

     jpt = new JPanel();

     jpt.add(new JLabel("T", JLabel.CENTER), BorderLayout.CENTER);

     jpw = new JPanel();

     jpw.add(new JLabel("W", JLabel.CENTER), BorderLayout.CENTER);

     jpn = new JPanel();

     jpn.add(new JLabel("N", JLabel.CENTER), BorderLayout.CENTER);

     jpword = new JPanel();

     jpword.add(new JLabel("DTWN rulez", JLabel.CENTER), BorderLayout.CENTER);


     getContentPane().add(jpstart, BorderLayout.CENTER);   

    }




    private void initFrm() {

        setSize(300,400);


        addWindowListener(new WindowAdapter() {

            public void windowClosing(WindowEvent we) {

                extApp();

            }


        });



    }


    private void extApp() {

        System.exit(0);

    }



    public static void main(String[] args) {

     new dtwn().show();   

    }


}

[/code]

Geschrieben

Moin,

ICQ hab ich wohl, nur hier gehts net......****** firewall und zuhause hab ich es kaum an.... bzw. sitze ich da kaum vorm Computer. Meine ICQ nummer ist 944869

Geschrieben

hmm was geht denn bei dir msn??? oder sonst was? ach ja probier mal mit icq über freie ports raus zu gehen sitze hier auch hinter der firewall gehe aber übe rnen freine port das kanste bei connections einstellen :-)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...