Essayer de résoudre un problème en utilisant l'interface graphique, mais si les déclarations sont confuses me

Muath:

Je suis en train de résoudre un projet, mais je suis coincé dans un problème.

• Votre programme devrait afficher un menu qui permet à l'utilisateur d'effectuer les
opérations suivantes (Note: GUI utilisation):
1. Ajouter un nouveau client
2. Supprimer un client
3. Modifier les informations d'un client // cette option doit afficher un sous-menu comme:
-------- 1. Client individuel // modifier les informations de base: téléphone # ...
code:

 //Modify Customer
    if (actionEvent.getSource().equals(modifyCustomer)) {
        frame.dispose();
        frame = new JFrame();
        panel = new JPanel();

        individualCustomer = new JButton("Individual customer");
        individualCustomer.addActionListener(this);

        panel.setBorder(BorderFactory.createEmptyBorder(100, 100, 100, 100));
        panel.setLayout(new GridLayout(0, 1));
        panel.add(individualCustomer);

        frame.setTitle("General Distribution Center");
        frame.add(panel, BorderLayout.CENTER);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);

        //Individual Customer
        if (actionEvent.getSource().equals(individualCustomer)) {
            frame.dispose();
            System.out.println("Enter the new phone number: ");
            int updatedPhoneNumber = input.nextInt();
        }

Mon premier problème est: Pourquoi les éléments suivants si la déclaration est fausse ??

if (actionEvent.getSource().equals(individualCustomer)) {

Mon deuxième problème est le suivant: Lorsque l'instruction if est vrai .. par exemple si type i

if(true){
         frame.dispose();
         System.out.println("Enter the new phone number: ");
         int updatedPhoneNumber = input.nextInt();
     }

Il fonctionne ce bloc immédiatement après i sélectionnez Modifier option client. Sans montrer individuel option client / bouton que je créé ici:

        individualCustomer = new JButton("Individual customer");
        individualCustomer.addActionListener(this);

S'il vous plaît, si vous ne connaissez pas la réponse et une meilleure réponse logique pour ce partage des problèmes du projet eux et je vais travailler à partir de là.

Aéroglisseur Full Of Eels:

Vous avez un énorme ActionListener, qui essaie de faire trop de choses à la fois. Cette seconde instruction if ne sera jamais vrai en raison de la façon dont votre code est câblé. Vous avez imbriqué le cas de telle sorte que si l'extérieur si est vrai ( ce qui permet l'intérieur si à atteindre), l'intérieur se sera toujours faux:

if (actionEvent.getSource().equals(modifyCustomer)) {
    // if we're here, then source will **never** be individualCustomer

    //..... code here

    // the if-test below will **always** be false
    if (actionEvent.getSource().equals(individualCustomer)) {
         // .... code here
    }
}

vous pourriez faire si ceux de en série:

if (actionEvent.getSource().equals(modifyCustomer)) {

    //.....

} else if (actionEvent.getSource().equals(individualCustomer)) {

    //.....

}

alors il fonctionnera.

Mieux vaut donner à chaque DButton sa propre ActionListener interne anonyme afin de séparer les préoccupations

individualCustomer = new JButton("Individual customer");
individualCustomer.addActionListener(() -> {
    // button-specific listener code goes here
});

En ce qui concerne ce code:

if(true){
     frame.dispose();
     System.out.println("Enter the new phone number: ");
     int updatedPhoneNumber = input.nextInt();
}

On dirait que vous essayez de mélanger la programmation de la console linéaire avec scanner et println avec une interface graphique événementielle, et qui est presque toujours voué à l'échec que les deux paradigmes ne se mélangent pas bien. Bâton avec un paradigme, ici, bâton à obtenir toutes les entrées via l'interface graphique de manière événementielle et supprimer tout le code du scanner basé sur System.in.


Une dernière chose, s'il vous plaît ne jetez un oeil à l'utilisation de JFrames multiples, bonne / mauvaise pratique?

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=341578&siteId=1
conseillé
Classement