Hallo Zusammen,
ich habe folgendes Problem.
Ich habe eine Klasse (JPanel Form) mit Buttons etc erstellt.
Diese will ich nun in einer anderen (Haupt)Klasse in ein vorhandenes Panel per Klick auf einen Button laden.
Ich habe schon folgendes Probiert
Java:
test muster=newtest();//JPanel form - extern
jPanel1.removeAll();
jPanel1.add(muster);
jPanel1.revalidate();
jPanel1.repaint();
Jedoch geschieht nichts wenn ich auf den Button klicke?
An was kann das liegen? am Layaut der Klasse?
Ich bin wirklich Ratlos und google brachte mich leider auch nicht zum Erfolg
Und ob das "jPanel1" wirklich das ist, was sichtbar ist? (Ein beliebter Fehler ist es, an falschen Stellen neue JPanels zu erstellen, die aber nirgendwo hinzugefügt werden...)
Du kannst auch mal muster.setBackground(Color.blue); machen. Falls dann etwas mit deinem test-Panel nicht stimmt, weißt du zumindest, dass es da ist und auch angezeigt wird
Bei dem panel1 und test() verwende ich grouplayout.
Das mit der Hintergrundfarbe hab ich gemacht und klappt auch - also die Actionlistener funktionieren soweit
package kgui;/**
*
* @author Ani
*/publicclass test extends javax.swing.JPanel{/** Creates new form test */publictest(){initComponents();this.setVisible(true);}/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/@SuppressWarnings("unchecked")// <editor-fold defaultstate="collapsed" desc="Generated Code">privatevoidinitComponents(){
jSlider1 =new javax.swing.JSlider();
jLabel1 =new javax.swing.JLabel();
jSlider1.setName("jSlider1");// NOI18NsetName("Form");// NOI18N
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(kgui.KguiApp.class).getContext().getResourceMap(test.class);
jLabel1.setText(resourceMap.getString("jLabel1.text"));// NOI18N
jLabel1.setName("jLabel1");// NOI18N
javax.swing.GroupLayout layout =new javax.swing.GroupLayout(this);this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(50,50,50).addComponent(jLabel1)));
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(30,30,30).addComponent(jLabel1)));}// </editor-fold>// Variables declaration - do not modifyprivate javax.swing.JLabel jLabel1;private javax.swing.JSlider jSlider1;// End of variables declaration}
So nun kannst du sehen, dass das test-Panel von dir hinzugefügt wird, sofern ich dich richtig verstanden habe.
Was genau ist denn nun das Problem? Wird auf dem test-Panel nichts angezeigt?
Habs bei mir mal getestet.
Also: Java lässt es nicht zu, wenn man versucht mehrmals die selbe Component auf eine andere Component zu packen. Deswegen wird dein JLabel auch nur einmal angezeigt.
Ich hatte die Zeile:
Bei mir weggenommen und das Label manuell benannt, das wurde auch erfolgreich angezeigt. Wenn du dein label nicht siehst, ist vermutlich der String "".