Gestion de jpanel à partir d'un bouton

Résolu
sansordi Messages postés 80 Date d'inscription   Statut Membre Dernière intervention   -  
Felice_ Messages postés 265 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour !

Voila je suis en train de développer mon logiciel mais étant amateur, il me manque quelques notions que je n'arrive pas à trouver.



// 1ere class : Fenêtre du logiciel avec un conteneur général qui servira de support autres conteneurs
public class 1 extends javax.swing.JFrame {
private javax.swing.JPanel contPrincipal;

public 1 () {
initComponents();
add(contPrincipal);
2 Panel2 = new 2();
contPrincipal.add(Panel2);

}
}

// 2eme class : Jpanel contenant un tableau avec BDD... et un bouton pour ajout de nouveau client
public class 2 extends javax.swing.JPanel{
private javax.swing.JBtutton nouveauClient;

public 2 () {
initComponents();
add(nouveauClient);
}
private void nouveauClient_jBtnActionPerformed(java.awt.event.ActionEvent evt) {
// je ne suis déjà pas très sur de cette manip mais cela fonctionne
1 logiciel = new 1();
4 nClient = 4(logiciel, true);
nClient.setVisible(true);
}
}


// 3eme class : jPanel contenant des informations sur le client
public class 3 extends javax.swing.JPanel{
public 3 () {
initComponents();
}
}


// 4eme class : dont le but est de rentrer les nouvelles données clients
public class 4 extends javax.swing.JDialog {
private javax.swing.JBtutton valider;
public 4 (java.awt.Frame parent, boolean modal){
super(parent, modal);
initComponents();
}
}



En gros, je souhaiterais que lorsque j'appuie sur mon bouton valider de ma fenêtre de dialogue, mon panel contPrincipal retire le panel de ma class 2 et ajoute celui de la class 3.
Sauf que je n'ai aucune idée de comment coder mon ActionPerformed pour que cela fonctionne.

J'avais essayé ca mais ca ne fonctionne pas (j'avais passé mon contPrincipal en public) :


public class 4 extends javax.swing.JDialog {
private javax.swing.JBtutton valider;

public 4 (java.awt.Frame parent, boolean modal){
super(parent, modal);
initComponents();
}

private void valider_jBtnActionPerformed(java.awt.event.ActionEvent evt) {
1 logiciel = new 1(); // forcement ici il prend en compte une nouvelle fenêtre autre que celle déjà existante
3 panel3 = new 3();
1.contPrincipal_jPnl.removeAll();
1.contPrincipal_jPnl.add(panel3);
1.contPrincipal_jPnl.validate();
1.contPrincipal_jPnl.repaint();
dispose();
}




J'espère ne pas demander l'impossible, sinon je vais devoir tout revoir ^^.
Merci de votre aide !

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Déjà ce serait bien de respecter les conventions de nommage Java.
Je ne sais pas comment tu fais pour tester ton code, mais c'est normalement impossible d'avoir un nom qui commence par un chiffre, donc
class 1
ou
1 logiciel = new 1();
ce n'est pas du Java...

Ensuite il faut te servir des imports, avoir toujours les classes pleinement nommées rend le code difficile à lire car ce sont des informations superflues qui empêchent de saisir l'essentiel du code.

Ça plus d'autres erreurs du genre JBtutton au lieu de JButton, 4 nClient = 4(logiciel, true); sans le new, sans parler de la méthode initComponents() que tu utilises partout mais n'est défini nul part.

Bref, tu n'as pas testé ton code, c'est impossible, et ce serait quand même un minimum avant de nous demander pourquoi ça ne fonctionne pas...
2
sansordi Messages postés 80 Date d'inscription   Statut Membre Dernière intervention  
 
En effet, ce code ne fonctionne pas pour la simple raison que je n'ai pas fais un copié collé du mien mais j'ai réécris les éléments les plus importants, et excuse moi pour la faute de frappe!

Bref, pour faire ce genre de réponse ca vole pas haut chez toi...

Je ne demande pas une solution toute prête mais des indices à tester pour ceux qui veulent bien faire l'effort de comprendre le principe de ma question...

Passes ton chemin si ce n'est pas a ta hauteur!
0
Felice_ Messages postés 265 Date d'inscription   Statut Membre Dernière intervention   11
 
Du calme…

Tu as en effet énormément d'erreur sansordi. Les remarques de KX même si elles te plaisent pas sont bonnes…

Un début de correction est :
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JDialog;
import java.awt.event.ActionEvent;
import java.awt.Frame;

// 1ere class : Fenêtre du logiciel avec un conteneur général qui servira de support autres conteneurs
public class C1 extends JFrame {
    private JPanel contPrincipal;
    
    public C1() {
        initComponents();
        add(contPrincipal);
        
        contPrincipal.add(new C2());
    }
}

// 2eme class : Jpanel contenant un tableau avec BDD... et un bouton pour ajout de nouveau client
public class C2 extends JPanel {
    private JButton nouveauClient;
    
    public C2() {
        initComponents();
        add(nouveauClient);
    }
     
    private void nouveauClient_jBtnActionPerformed(ActionEvent evt) {
        new C4(new C1(), true).setVisible(true);
    } 
}

// 3eme class : jPanel contenant des informations sur le client
public class C3 extends JPanel {
    public C3 () {
        initComponents();
    }
}

// 4eme class : dont le but est de rentrer les nouvelles données clients
public class C4 extends JDialog {
    private JButton valider;
    private Frame logiciel;
    
    public C4 (Frame parent, boolean modal){
        super(parent, modal);
        initComponents();
        
        logiciel = parent;
    }
    
    private void valider_jBtnActionPerformed(ActionEvent evt) {
        logiciel.contPrincipal_jPnl.removeAll();
        logiciel.contPrincipal_jPnl.add(new C3());
        logiciel.contPrincipal_jPnl.validate();
        logiciel.contPrincipal_jPnl.repaint();
        dispose();        
    }
}
0
sansordi Messages postés 80 Date d'inscription   Statut Membre Dernière intervention   > Felice_ Messages postés 265 Date d'inscription   Statut Membre Dernière intervention  
 
Merci de ta réponse, en effet il y avait pas mal d'erreur. En ce qui concerne les importations, Netbeans les gère pour moi, donc ce n'est vraiment pas la source du problème...

En ce qui concerne ta proposition, dans la classe C4, contPrincipal ne peut pas être appeler ainsi, cela renvoie une erreur.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020 > sansordi Messages postés 80 Date d'inscription   Statut Membre Dernière intervention  
 
contPrincipal ne peux pas être appelé car il est private, mais de toute façon dans C4 c'est contPrincipal_jPnl qui est utilisé donc ça ne porte pas le même nom.

Après ce qu'il faut voir c'est que le temps qu'on va consacrer à faire marcher ton code on ne va pas pouvoir le consacrer à répondre à ta question.

Alors que si ton code fonctionnait on pourrait tester et te répondre tout de suite
0
Felice_ Messages postés 265 Date d'inscription   Statut Membre Dernière intervention   11 > sansordi Messages postés 80 Date d'inscription   Statut Membre Dernière intervention  
 
Désolé mais je n'ai sur le moment pas vraiment cherché à comprendre ce que ton programme fait…

Ta méthode « initComponents » semble lié a ton ide « Netbeans », jusque là ok.

En revanche je me demande sur le moment d'où elle sort ta propriété « contPrincipal_jPnl » ?

De même au niveau de
new C4(new C1(), true).setVisible(true);


C'est bien une nouvelle instance de la classe C1 que tu as besoin ?
0