Modèle de méthode d'usine de GUI d'oscillation


Je cherche à utiliser le modèle de méthode Factory afin de rendre le développement de mon interface utilisateur Swing plus rapide et plus gérable.

En général, c'est une application MDI utilisant JInternalFrames. J'ai beaucoup de paramètres, types comme je les appelle, dans le système (par exemple. userTypes, accountTypes, etc.) J'ai une INTERFACE utilisateur fixe que j'ai décidé d'utiliser. Le fait est qu'il y a plus de 50 de ces types dans le système, donc le modèle de méthode d'usine semble être la solution la plus gérable. Ci-dessous, deux captures d'écran d'un travail d'application.

partie principale d'un enregistremententrez la description de l'image ici

Je regardais [cet exemple] [3] mais comme je ne pourrai pas estimer le nombre d'onglets dont j'aurais besoin pour stocker toutes les informations dans un enregistrement, je devrais pouvoir ajouter plusieurs onglets et contrôles (étiquettes, zones de texte, tables, comboboxes, etc.) au sein de ces onglets.

, Basé sur l'exemple, est-il possible de créer un JTabbedPane dans la classe abstraite et modifier et ajouter dans le sous-classes? J'ai essayé ce qui suit et je suis un peu perdu:

public AbstractTypeInternalFrame(String title) {
        setBounds(100, 100, 808, 589);

        JToolBar toolBar = new JToolBar();
        getContentPane().add(toolBar, BorderLayout.NORTH);

        JButton btnAdd = new JButton("Add");
        toolBar.add(btnAdd);

        JButton btnSave = new JButton("Save");
        btnSave.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
            }
        });
        toolBar.add(btnSave);

        JButton btnDelete = new JButton("Delete");
        toolBar.add(btnDelete);

        JButton btnCancel = new JButton("Cancel");
        btnCancel.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            }
        });
        toolBar.add(btnCancel);

        JTabbedPane recordTabs = new JTabbedPane(makeRecordTabPane());
        getContentPane().add(recordTabs, BorderLayout.NORTH);

        JSeparator recordSearchSeparator = new JSeparator();
        getContentPane().add(recordSearchSeparator, BorderLayout.NORTH);



    }

    protected abstract int makeRecordTabPane();

Avec la méthode makeRecordTabPane() require pour renvoyer un int.

Comme vous pouvez le voir, je suis un peu perdu et j'ai juste besoin d'une direction quant à la façon de procéder avec un tel modèle. Si quelqu'un a des conseils ou même des exemples/liens, ce serait très apprécié.

Je me rends compte que ma question est vague, donc si des éclaircissements sont nécessaires de mon côté, n'hésitez pas à demander.

Meilleures salutations.

Author: greatkalu, 2012-05-30

1 answers

Voici la question plus en détail.

Donc, je cherche à construire un JInternalFrame simple pour les opérations CRUD sur les enregistrements du système. Enregistrements tels que les utilisateurs, les types d'utilisateurs, les comptes, les types de comptes, etc. Il y a plus de 50 de ces types dans le système, donc je pense que l'utilisation du modèle de méthode d'usine rendrait tous ces JInternalFrames plus gérables.

Voici un exemple d'enregistrement utilisateur:

Lien 1 Link2

La moitié supérieure constitue de les détails d'un enregistrement, qui sont répartis dans les onglets en fonction du contenu de l'enregistrement. Certains enregistrements peuvent avoir un seul onglet, tandis que d'autres plus grands en auront plusieurs. Par conséquent, le contenu du JTabbedPane doit être instancié au niveau de la sous-classe et selon cet exemple.

La partie inférieure est l'endroit où nous rechercherions des enregistrements de ce type. Disons par exemple, dans les liens publiés, le gestionnaire d'utilisateurs JInternalFrame est ouvert. Nous rechercherions ensuite des utilisateurs selon nom d'utilisateur et / ou ID utilisateur. Les résultats sont affichés dans le tableau ci-dessous et en double-cliquant sur un résultat de recherche, l'enregistrement est affiché ci-dessus dans le JTabbedPane.

Les boutons Ajouter, Enregistrer, Supprimer et Annuler sont ensuite utilisés pour effectuer des opérations CRUD sur tout ce qui est entré dans l'enregistrement.

De cela, nous pouvons dire que les aspects de la conception qui doivent être instanciés par des sous-classes sont:

1) Taille du JInternaFrame 2) Tout le contenu du JTabbedPane: pas de tabes, tables, étiquettes, zones de texte, etc. 3) Le nombre de colonnes dans le résultat de la recherche JTable: que nous pouvons modifier en instanciant l'en-tête JTable.

Au début, j'essayais simplement de créer une classe abstraite avec un JTabbedPane et d'ajouter des composants au JTabbedPane pour voir comment je pouvais m'y prendre. C'est le code que j'ai posté plus tôt. Ce fichier a été généré à l'aide de WindowBuilder, que j'ai ensuite modifié:

package zm.co.freight.fpsManagementGUI.view;

import java.awt.EventQueue;

public abstract class AbstractTypeInternalFrame extends JInternalFrame {

    /**
     * Launch the application.
     */
//  public static void main(String[] args) {
//      EventQueue.invokeLater(new Runnable() {
//          public void run() {
//              try {
//                  AbstractTypeInternalFrame frame = new AbstractTypeInternalFrame();
//                  frame.setVisible(true);
//              } catch (Exception e) {
//                  e.printStackTrace();
//              }
//          }
//      });
//  }

    /**
     * Create the frame.
     */
    public AbstractTypeInternalFrame(String title) {
        setBounds(100, 100, 808, 589);

        JToolBar toolBar = new JToolBar();
        getContentPane().add(toolBar, BorderLayout.NORTH);

        JButton btnAdd = new JButton("Add");
        toolBar.add(btnAdd);

        JButton btnSave = new JButton("Save");
        btnSave.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
            }
        });
        toolBar.add(btnSave);

        JButton btnDelete = new JButton("Delete");
        toolBar.add(btnDelete);

        JButton btnCancel = new JButton("Cancel");
        btnCancel.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            }
        });
        toolBar.add(btnCancel);

        JTabbedPane recordTabs = new JTabbedPane(makeRecordTabPane());
        getContentPane().add(recordTabs, BorderLayout.NORTH);

        JSeparator recordSearchSeparator = new JSeparator();
        getContentPane().add(recordSearchSeparator, BorderLayout.NORTH);



    }

    protected abstract int makeRecordTabPane();

}

La question est, suis-je sur la bonne voie? Comment dois-je l'aborder en utilisant le modèle de méthode d'usine car je ne semble pas le saisir très bien. J'ai vu des exemples plus simples, avec des formes et des dessins, mais je suis un peu perdu avec les interfaces Swing. Y at-il un bon exemple que vous pourriez me diriger vers ou un exemple simple juste pour me diriger dans la bonne direction ... c'est tout ce que je demandais. Désolé si c'était vague ...

 0
Author: greatkalu, 2012-05-31 09:40:38