switchen von einem panel zum nächsten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • switchen von einem panel zum nächsten

    Hallo Leute,

    hoffe ihr könnt mir vielleicht bei meinem Programmierproblem helfen.
    Ich habe ein Panel, mit einem Inhaltsvertzeichnis drauf. Jetzt muß ich das ganze so implementieren, das ich die einzelnen Menüpunkte (also entweder mit Button oder dem Menüpunkt selbst) anklicken kann, und dann auf das jeweilige Panel switche.

    Danke im Voraus!

    LG M.
  • Re: switchen von einem panel zum nächsten

    "Merlin_75" schrieb:

    Hallo Leute,

    hoffe ihr könnt mir vielleicht bei meinem Programmierproblem helfen.
    Ich habe ein Panel, mit einem Inhaltsvertzeichnis drauf. Jetzt muß ich das ganze so implementieren, das ich die einzelnen Menüpunkte (also entweder mit Button oder dem Menüpunkt selbst) anklicken kann, und dann auf das jeweilige Panel switche.

    Danke im Voraus!

    LG M.



    Olla,

    hmm ich nehme an das Panel wird in einem anderen Panel sein welches in einem JFrame ist.
    Wenn du nun auf den Button klickst soll er halt das eine Panel in das andere Panel gelladen werden...

    Quellcode

    1. MeinZuLadenesPanel pn = new MeinZuLadenesPanel();
    2. meinHauptPanel.add(pn);
    3. meinHauptPanel.repaint();


    Oder hab ich dich falsch verstanden? ^^
  • switchen von einem panel zum nächsten

    Hallo!

    Zuerst mal danke für deine antwort. Ja das sollte eigentlich passen.
    Ich bin leider fast ein Anfänger. Wie muß ich jetzt die Methode actionPerformed implementieren, wenn das hauptpanel auf einem tabbedPane liegt?
    also die seite mit dem Inhaltsverzeichnis und dem JButton liegt auf dem tabbedPane.
    Und wenn der JButton gedrückt wird, dann sollte in dem selben tabbedPane das neue Panel erscheinen....
    Hoffe ich habs verständlich erklärt

    LG M.
  • Hi,
    den Tab wechseln tust du mit setSelectedIndex(int).
    Ansonsten musst du eben ein paar Variablen in der Klasse verfügbar machen und kannst den Inhalt so austauschen... ist aber auch nicht die optimale Lösung.
    Bin nicht so der SWING Fan ;)

    http://java.sun.com/docs/books/tutorial/uiswing/components/tabbedpane.html

    Quellcode

    1. public class TabbedPaneDemo extends JPanel {
    2. JComponent panel2;
    3. public TabbedPaneDemo() {
    4. ....
    5. panel2 = makeTextPanel("Panel #2");
    6. JButton b = new JButton("Button");
    7. b.addActionListener(new ActionListener() {
    8. public void actionPerformed(ActionEvent e) {
    9. //tabbedPane.setSelectedIndex(0);
    10. panel2.removeAll();
    11. panel2 = makeTextPanel("Panel #10");
    12. panel2.repaint();
    13. }
    14. });
    15. panel2.add(b);
    16. tabbedPane.addTab("Tab 2", icon, panel2, "Does twice as much nothing");
    17. tabbedPane.setMnemonicAt(1, KeyEvent.VK_2);
    Alles anzeigen
  • switchen von einem panel zum nächsten

    ich versuch mal!

    aufrufende Klasse

    Quellcode

    1. public class MainFrame extends JFrame {
    2. JTabbedPane tabPane = new JTabbedPane();
    3. JPanel panel = new JPanel();
    4. private void jbInit() throws Exception {
    5. this.getContentPane().add(tabPane, BorderLayout.CENTER);
    6. tabPane.addTab("Vokabeln", new VocabularyPanel());
    7. }
    8. public static void main(String[] args){
    9. ..........
    10. }
    Alles anzeigen

    DAS VOCABULARYPANEL

    Quellcode

    1. [
    2. public class VocabularyPanel extends JPanel {
    3. private JButton addVocBtn = new JButton(arrowBlue);
    4. private void jbInit() throws Exception {
    5. .......................
    6. this.add(addVocBtn, null);
    7. ....................................
    8. addVocBtn.addActionListener(new ActionListener() {
    9. public void actionPerformed(ActionEvent e) {
    10. ????????????????????????????????????
    11. ????????????????????????????????????
    12. ????????????????????????????????????
    13. }
    14. });
    15. }
    16. }
    Alles anzeigen

    DAS ADDWORDPANEL

    Quellcode

    1. public class AddWordPanel extends JPanel {
    2. ...................................
    3. }

    also, mit der klasse mainframe wird das ganze aufgerufen, und der JFrame mit dem Tabbedframe ist sichtbar.
    Dann sollte man zu dem Tab "Vokabeln" wechseln und dort ist das Verzeichnis(hinzufügen, bearbeiten, löschen) mit dem JButtons. Wenn man den drückt, sollte das verzeichnis verschwinden und in diesem Fall das "addWordPanel" sichtbar werden.
  • habs mal so umgeschrieben, dass du doch keine extra Klassenvariablen brauchst. Du hangelst dich mit getParent nach oben.

    Quellcode

    1. b.addActionListener(new ActionListener() {
    2. public void actionPerformed(ActionEvent e) {
    3. ((JButton)e.getSource()).getParent().remove(0);
    4. JComponent x = makeTextPanel("Panel #10");
    5. ((JComponent)e.getSource()).getParent().add(x);
    6. ((JComponent)((JComponent)e.getSource()).getParent()).updateUI();
    7. }
    8. });


    Dadurch, dass ich keine Klassenvariablen verwende, sollte er 1:1 bei dir funktionieren.
    Bin aber auch nicht mit der Lösung zufrieden. Das JPanel wird überschrieben. Wenn du zwischen den Tabs wechselst, wird diese Auswahl gespeichert. Für den Moment habe ich aber keine besseren Ideen.
    Ohne diese Tabs wäre das einfacher.
  • switchen von einem panel zum nächsten

    ok, also nach längerer verzweiflungsphase hab ich jetzt beschlossen die tabs wegzulassen. ich hab jetzt vor, dass ich einen JFrame erstelle und darauf ein JPanel(Titelseite) gebe, mit einem Button. beim drücken des JButtons sollte dann
    das Panel mit dem Inhaltsverzeichnis aufgerufen werden.
    oder hat irgendwer einen besseren Vorschlag, bin für alles offen.....
    wenn nicht, wie sollte dann die actionPerformed ausschauen?

    DANKE M.