Anfänger: Panel bei Button Klick anzeigen?

Status
Nicht offen für weitere Antworten.
B

bernostern

Gast
Hallo,

also ich stell mich hier an... unglaublich.

Ich hab mal eine möglichst kurzen Code, um zu zeigen, was ich will. Eigentlich dachte ich es ist ganz einfach. Ich möchte beim Klick auf einen Button einfach ein weiteres Panel anzeigen bzw. neu erzeugen. Das Panel soll sich dann innerhalb eines anderen Panels befinden.
Code:
package de.gui;


public class MainJFrame extends javax.swing.JFrame {

	
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JPanel jPanel1;
    
    private myJPanel jp;


	    public MainJFrame() {
	        initComponents();
	    }

	    private void initComponents() {
	        jPanel1 = new javax.swing.JPanel();
	        jButton1 = new javax.swing.JButton();
	        
	        jButton1.setText("jButton1");
	        jButton1.addActionListener(new java.awt.event.ActionListener() {
	            public void actionPerformed(java.awt.event.ActionEvent evt) {
	                jButton1ActionPerformed(evt);
	            }
	        });

	        	// Layout Zeug weggelassen //
	        
	        
	        pack();
	    }                        

	    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {  
	    	jp = new myJPanel();  
	        jp.setVisible(true);
	        jPanel1.add(jp); // innerhalb dieses jPanel1 hätte ich gern das neue...
	    }                                        

	    public static void main(String args[]) {
	        java.awt.EventQueue.invokeLater(new Runnable() {
	            public void run() {
	                new MainJFrame().setVisible(true);
	            }
	        });
	    }
	    
	    
}

Es kann jetzt sein, dass ich irgendwo etwas vergessen habe, aber es soll ja nur Beispiel-Code sein. Das Panel wird nie angezeigt, ich weiß nicht was fehlt (revalidate, repaint...?).
Oder ist der ganze Ansatz völlig falsch?

Da es später so sein soll, dass man bei bestimmten Events immer ein neues Panel bekommt, würde ich das Panel gern erst erzeugen, wenn es wirklich gebraucht wird, also nicht mit setVisible() usw. die Panels durchschalten.

Danke fürs Licht im Dunkel!

Bern
 

André Uhres

Top Contributor
Versuch's mit validate():
Code:
package gui;
/*
 * MainJFrame.java
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MainJFrame extends JFrame {
    private JButton btAdd;
    private JPanel mainPanel;
    private JPanel jp;
    public MainJFrame() {
        super("MainJFrame");
        mainPanel = new JPanel();
        btAdd = new JButton();
        btAdd.setText("Add");
        btAdd.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                btAddActionPerformed(evt);
            }
        });
        add(btAdd, BorderLayout.NORTH);
        add(mainPanel);
        setSize(400,300);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    private void btAddActionPerformed(ActionEvent evt) {
        jp = new JPanel();
        jp.add(new JLabel("jp"));
        mainPanel.add(jp);
        validate();
    }
    public static void main(String args[]) {new MainJFrame().setVisible(true);}
}
 
G

Guest

Gast
Hallo,

erst einmal danke für deinen Tip!

Mit deinem Code gehts, mit meinem nach wie vor nicht. Anscheinend hab ich da Probleme mit dem ganzen Layout Zeugs. Das hat man davon, wenn man es nicht selber macht sondern mit Hilfe eines GUI Designers :-(

Hab jetzt mal den ganzen Frame inkl. Layout Code drangehängt. Wer Lust hat kann gerne mal drüberschaun. Ich werd jetzt auch weitersuchen.

Code:
package de.guitest;

// eigentlich keine imports notwendig, da 
// swing-layout-1.0.jar miteingepackt wird.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;



public class frmOptionsUI extends javax.swing.JFrame {
	
	
	private static final long serialVersionUID = 1L;
    
	private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane pnlScrollDetail;
    private javax.swing.JTree treeOptions;

//  diese von JPanel abgeleitete Klasse soll bei 
//  Buttonklick in dem pnlScrollDetail-JScrollPane 
//  angezeigt werden
    private prmEntityJstateUI p;  
	

    public frmOptionsUI() {
        initComponents();
    }
 
    private void initComponents() {
    	
    	jScrollPane1 = new javax.swing.JScrollPane();
        treeOptions = new javax.swing.JTree();
        pnlScrollDetail = new javax.swing.JScrollPane();
        jButton1 = new javax.swing.JButton();
        
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jScrollPane1.setBackground(new java.awt.Color(255, 255, 255));
        treeOptions.setCellRenderer(treeOptions.getCellRenderer());
        jScrollPane1.setViewportView(treeOptions);
        
              
        jButton1.setText("jButton1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 191, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jButton1))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(pnlScrollDetail, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 486, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(18, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(layout.createSequentialGroup()
                        .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 444, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jButton1))
                    .add(pnlScrollDetail, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 485, Short.MAX_VALUE))
                .addContainerGap())
        );
        pack();
    }                     

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {     
    	// später soll bei Auswahl eines best. Eintrags im JTree
    	// dann das entsprechende Panel erzeugt und angezeigt werden
    	// Anzeige per Button-Klick momentan nur zum Test.
    	p = new prmEntityJstateUI();
        pnlScrollDetail.add(p);
        validate();

    }                                        
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new frmOptionsUI().setVisible(true);
            }
        });
    }
    
}


Schöne Grüße,
Bern
 

André Uhres

Top Contributor
Code:
...
    private JPanel pnlScrollDetail;
...
        pnlScrollDetail = new JPanel();
...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Panel dupliziert sich und Textboxes werden nicht angezeigt [Anfänger] AWT, Swing, JavaFX & SWT 6
Paty JFrame anfänger bräuchte hilfestellung AWT, Swing, JavaFX & SWT 7
N 3D Games anfänger AWT, Swing, JavaFX & SWT 10
C Swing AWT GUI Anfänger Aufgabe AWT, Swing, JavaFX & SWT 7
S Hilfe bei Java Gui Anfänger AWT, Swing, JavaFX & SWT 5
I Erste Desktop Software - blutiger Anfänger AWT, Swing, JavaFX & SWT 4
R Flickr-Flickr4Java Anfänger AWT, Swing, JavaFX & SWT 2
D [Anfänger]ComboBox erstellt Einträge in einer anderen ComboBox AWT, Swing, JavaFX & SWT 3
J GUI Anfänger einfaches Program AWT, Swing, JavaFX & SWT AWT, Swing, JavaFX & SWT 3
J Anfänger GUI Problem bei der Ausführung eines sehr einfachen Programms AWT, Swing, JavaFX & SWT 2
T Swing NullPointerException beim auslesen von jTextField - Anfänger! AWT, Swing, JavaFX & SWT 3
M JFrame - Anfänger, kurze Erklärung AWT, Swing, JavaFX & SWT 5
G Swing anfänger AWT, Swing, JavaFX & SWT 2
N Swing JTable anfänger frage AWT, Swing, JavaFX & SWT 2
K AWT Anfänger AWT, Swing, JavaFX & SWT 6
K Swing SwingGUI - Erstellen für Anfänger AWT, Swing, JavaFX & SWT 15
P Anfänger Problem AWT, Swing, JavaFX & SWT 8
2 Anfänger problem: Buttenklick soll reagieren AWT, Swing, JavaFX & SWT 9
S Button Größe - Anfänger AWT, Swing, JavaFX & SWT 13
S Anfänger - JFrame/JLabel nicht sichtbar AWT, Swing, JavaFX & SWT 5
K GUI-Hilfe für Anfänger AWT, Swing, JavaFX & SWT 15
P Stack Anfänger AWT, Swing, JavaFX & SWT 8
R AWT [Anfänger] Darstellungsfehler bei Größenändereung einese Fensters AWT, Swing, JavaFX & SWT 2
R AWT [Anfänger] keine atives Aussehen von Buttons AWT, Swing, JavaFX & SWT 4
R AWT [Anfänger] Radio Buttons NetBeans 6.7.1 AWT, Swing, JavaFX & SWT 2
S Anfänger: Layoutproblem ! AWT, Swing, JavaFX & SWT 3
P Anfänger Probleme mit JTable bitte um Rat! AWT, Swing, JavaFX & SWT 5
E Anfänger-JPanel aus Menü aufrufen AWT, Swing, JavaFX & SWT 4
L Design-Probleme (Swing-Anfänger) AWT, Swing, JavaFX & SWT 6
B GUI Anfänger -> Versionsunterschiede in Swing 1.5 / 1.4 . AWT, Swing, JavaFX & SWT 27
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 Swing Bei Button Click neues Panel laden AWT, Swing, JavaFX & SWT 3
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

Ähnliche Java Themen


Oben