kostenloser Webspace werbefrei: lima-city


Panel einer Klasse in einer anderen anzeigen

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    f**i

    Ich habe zwei Klasse. durch eine Aktion in der ersten Klasse m?chte ich das dass Panel der zweiten Klasse in der ersten angezeigt wird. Aber wie?


    Die eigentliche Klasse mit dem contentpane:

    public class SchiffeVersenken extends JFrame{

    private javax.swing.JPanel jContentPane = null;

    private javax.swing.JPanel getJContentPane()
    {
    if (jContentPane == null)
    {
    jContentPane = new javax.swing.JPanel();
    jContentPane.setLayout(new java.awt.BorderLayout());
    jContentPane.add(getJJMenuBar(), java.awt.BorderLayout.NORTH);
    }
    return jContentPane;
    }

    private javax.swing.JMenuItem getJMenuItem3() {
    if(jMenuItem3 == null) {
    jMenuItem3 = new javax.swing.JMenuItem();
    jMenuItem3.setText("Neues Spiel");
    jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent e) {
    System.out.println("actionPerformed()");
    /*DURCH DIESE AKTION SOLL DAS PANEL DER ANDEREN KLASSE IN DIESER KLASSE ANGEZEIGT WERDEN*/
    }

    });
    }
    return jMenuItem3;
    }


    Die zweite Klasse. Das Panel dieser Klasse soll sich in der oberern Klasse ?ffnen

    public class ConnectionPanel extends JPanel{

    private javax.swing.JPanel jPanelConnection = null;

    private javax.swing.JPanel getJPanelConnection() {
    if(jPanelConnection == null) {
    jPanelConnection = new javax.swing.JPanel();
    jPanelConnection.setLayout(null);
    jPanelConnection.setVisible(true);
    }
    return jPanelConnection;
    }
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 2**s

    Erstaml eines vorweg:

    Wieso leitest du von JPanel ab, wenn du eine JPanel Objct in der Klasse hast?
    Du erweiterst die Funktionalit?t von JPanel doch gar nicht, also warum leitest du ab?
    Reicht in deinem Fall nicht einfach ein Object der Klasse JPanel, welches deine Maske darstellt?

    Jetzt zu deiner Frage:

    Willst due es so haben, dass da ein leeres Panel ist und nach der Aktion anstatt des leeren Panels dein panel angezeigt wird?

    Dann probiers entweder ?ber ein CardLayout
    http://java.sun.com/docs/books/tutorial/uiswing/layout/card.html

    oder
    versuch es mal mit den methoden

    mittelpanel.removeAll();
    // Dann das Panel setzen
    //...
    //und dann alles neuzeichen
    //z.B. mittelpanel.add(deinpanel);
    mittelpanel.revalidate();
    mittelpanel.repain();

    So habe ich es mal in einem Projekt gel?st.


    ***EDIT***
    mir f?llt grad ein:
    Vielleicht tut es ja auch ein einfacher JDialog
  4. Autor dieses Themas

    f**i

    mit dem JPanel hast recht. hab es nun weggelassen und funktioniert trozdem.


    habe nun auch des prob gel?st so wie ich es wollte.
    bei Klick auf denn Button wird nun das Panel aus der anderen Klasse angezeigt.

    habe im Connection Panel (das Panel das sich ?ffnen soll) eine setMethode() hinzugef?gt:

    public void setJPanelConnection(boolean x)
    {
    jPanelConnection.setVisible(x);
    }



    und in der klasse in welcher das Panel angezeigt werden folgendes hinzugef?gt:



    ConnectionPanel connectionGUI = new ConnectionPanel();

    //Methode JContentPane:
    //ConnectionGUI dem ContentPane hinzuf?gen aber als nicht sichtbar anzeigen

    jContentPane.add(connectionGUI.getJPanelConnection());
    connectionGUI.setJPanelConnection(false);

    //mein JMenuItem:
    public void actionPerformed(java.awt.event.ActionEvent e){
    connectionGUI.setJPanelConnection(true);
    }
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!