créer ou permettre Dynamiquement Articles / actions de l'utilisateur désapprouve java swing

StackOverflow https://stackoverflow.com/questions/4485204

Question

J'ai une base de données qui contient des utilisateurs, des rôles et autorisations. Je veux être en mesure de cartographier ce à l'extrémité avant (Java Swing) de sorte qu'un utilisateur qui ne peut pas faire une action ne peut pas le voir.

Exemple Un:

  • Rôle AddressManager dispose des autorisations create_address, et Edit_Address remove_address.
  • L'utilisateur A dispose des autorisations create_address et Edit_Address.
  • L'utilisateur B a remove_address autorisation.

Je veux trois boutons pour la vue d'adresses qui représentent les rôles du AddressManager, et pour les utilisateurs A et B pour activer / désactiver les boutons.

Question: Y at-il un moyen facile de mapper les valeurs de table de base de données Swing composants (boutons)

?

La première consiste à assign activer / désactiver manuellement à chaque composant, mais qui est peu pratique s'il y a 40 boîtes de dialogue dans l'application avec environ 200 composants qui doivent avoir l'autorisation.

Était-ce utile?

La solution

Ce que vous pouvez faire est d'écrire une classe comme celui-ci et l'utiliser partout. Dans votre exemple, vous ajouteriez avec de nouveaux ActionContainer ( « adresse »); et il va créer un create_address, Edit_Address, Bouton delete_address qui sont activés si l'utilisateur Posses le droit correspondant.

package de.steamnet.samples;

// This class is a Panel that renders buttons based on rights.

import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JPanel;

public class ActionContainer extends JPanel {
    List<JButton> buttons = new ArrayList<JButton>();

    public ActionContainer(String rightBase) {
        List<String> rights = database.getRightsStartingWith(rightBase);
        for(String nextRight : rights) {
            JButton next = new JButton(nextRight);
            buttons.add(next);
            if(user.hasRight(nextRight)) {
                next.setEnabled(true);
            } else {
                next.setEnabled(false);
            }
            add(next);
        }
    }

    public void addActionListener(ActionListener al) {
        for(JButton next: buttons) {
            next.addActionListener(al);
        }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top