Bonjour,
Actuellement à la découverte du langage Java, je m'entraine sur l'interface graphique d'une application qui accède à une BDD.
donc pour l'instant j'ai 4 classes Air_Java.java qui contient le main() et qui instancie la fenêtre principale de l'application (FenMain.java) puis j'ouvre un Jdialog pour obtenir un login/password que je vérifie dans la BDD (login.java).
En fonction du login on peut être Administrateur et donc avoir accès à plus de menu que l'Utilisateur.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| public class Air_Java {
/**
* Launch the application.
*/
public static void main(String[] args) {
String url = "jdbc:sqlserver://localhost:1433;databaseName=Air de Java;user=Java;password=bruno67";
final SQLService sqls;
sqls = new SQLService(url);
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
String Profil;
//JMenuItem mntmGrer = new JMenuItem("G\u00E9rer");
FenMain frame = new FenMain();
frame.setVisible(true);
/*
* En utilisant une JDialog avec setModal(true) tu crée une fenêtre secondaire dépendant de celle qui l'as instancié,
* ainsi ta fenêtre principale attend que ta fenêtre secondaire soit fermé pour continuer son traitement.
*/
Login Fen1 = new Login(frame, sqls);
Fen1.setVisible(true);
Profil = Fen1.getProfil();
if (Profil.compareTo("Administrateur") ==1 ) {
System.out.println("Profil : " + Profil);
JMenuItem mntmGrer = new JMenuItem("G\u00E9rer");
//mnGroupes.add(mntmGrer);
//frame.changeMenu(mntmGrer);
frame.mnGroupes.add(mntmGrer);
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
} |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| public class FenMain extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel contentPane;
JMenu mnGroupes;
/**
* Create the frame.
*/
public FenMain() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(10, 10, 800, 600);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
mnGroupes = new JMenu("Groupes");
menuBar.add(mnGroupes);
JMenuItem mntmChercher = new JMenuItem("Chercher");
mnGroupes.add(mntmChercher);
//JMenuItem mntmGrer = new JMenuItem("G\u00E9rer");
//mnGroupes.add(mntmGrer);
//mntmGrer.setEnabled(false);
JMenu mnNewMenu = new JMenu("Membres");
menuBar.add(mnNewMenu);
JMenu mnNewMenu_1 = new JMenu("R\u00E9pertoire");
menuBar.add(mnNewMenu_1);
JMenu mnRencontres = new JMenu("Rencontres");
menuBar.add(mnRencontres);
JMenu mnNewMenu_2 = new JMenu("Programmer");
menuBar.add(mnNewMenu_2);
JMenu mnPlanification = new JMenu("Planifier");
menuBar.add(mnPlanification);
JMenu mnInterrogations = new JMenu("Interrogations");
menuBar.add(mnInterrogations);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
}
public void changeMenu(JMenuItem sousMenu) {
sousMenu.setEnabled(true);
}
} |
Je n'ai trouvé qu'un seul moyen pour aboutir au résultat que je désires :
1 2 3 4
| JMenuItem mntmGrer = new JMenuItem("G\u00E9rer");
//mnGroupes.add(mntmGrer);
//frame.changeMenu(mntmGrer);
frame.mnGroupes.add(mntmGrer); |
Je pensais que j'aurais pu tout simplement agir sur la propriété de visibilité :
mntmGrer.setEnabled(false);
mais mntmGrer n'est pas visible depuis Air_Java.java
j'ai alors pensé faire la fonction changemenu() mais je ne sais pas passer en paramètre mntmGrer
J'ai probablement pas bien penser l'interface dès le départ mais je découvre tout en même temps, Java, Programmation Objet, Swing ...
mais sinon dans la forme que j'ai ecrit, est la seule façon de faire ou quelque chose m'a echappé.
Merci d'avance
Partager