[JAVA] Controleur
V3n1
Messages postés
304
Statut
Membre
-
V3n1 Messages postés 304 Statut Membre -
V3n1 Messages postés 304 Statut Membre -
Bonjour,
En faite j'essaye en quelques sortes de suivre le modèle MVC pour un projet.
Sauf que j'arrive pas trop gérer l'ajout d'un panel par un ActionListener.
Ci-dessous la description de deux classes :
-----------------------------------------
--------------------------------------------
Pour plus de précision, la gestion du bouton quitter marche parfaitement alors que le bouton Import étudiants ne fonctionne pas.. J'arrive à afficher les noms de mon fichier Excel dans la console, mais je n'arrive pas à ajouter le panel dans la feneêtre principale.
Pourtant, je créer le JTable, ensuite le panel puis j'ai crée une fonction qui ajoute le panel à la fenêtre et je crains que c'est celle-ci qui ne fonctionne pas !
Vous avez des idées ?
Merci d'avance!
En faite j'essaye en quelques sortes de suivre le modèle MVC pour un projet.
Sauf que j'arrive pas trop gérer l'ajout d'un panel par un ActionListener.
Ci-dessous la description de deux classes :
public class JeuControleur implements ActionListener {
/**
* La vue affichant la fenêtre principale
*/
private FenetrePrincipale vue;
public JeuControleur(){
}
public void setVue(FenetrePrincipale vue) {
this.vue = vue;
}
public void actionPerformed(ActionEvent e) {
String s = e.getActionCommand();
if(s.equals("Quitter")){
this.vue.fermer();
System.exit(1);
} else if(s.equals("Import des étudiants")) {
this.vue.removeMonPanel();
JFileChooser chooser = new JFileChooser(); // Création d'un filechosser
chooser.setApproveButtonText("Choix du fichier..."); // Nom du bouton
int returnVal = chooser.showOpenDialog(null); // Affiche la boite de dialogue
JTable maTable = null;
if (returnVal == JFileChooser.APPROVE_OPTION){
File monFichier = chooser.getSelectedFile();
UtilitaireXLS monTableau = new UtilitaireXLS();
try {
maTable = monTableau.CreerJTableAvecExcel(monFichier);
} catch (FileNotFoundException ex) {
Logger.getLogger(JeuControleur.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(JeuControleur.class.getName()).log(Level.SEVERE, null, ex);
}
this.vue.ajoutPanel(this.vue.creerPanelJTable(maTable));
this.vue.actualiserFenetre();
}
}
}
}
-----------------------------------------
public class FenetrePrincipale extends JFrame{
/**
* Controleur qui gère les demandes de l'utilisateur
*/
private JeuControleur controleur;
/**
* Panel qui change d'après les demandes de l'utilisateur
*/
private JPanel monPanel = new JPanel(new GridBagLayout());
public FenetrePrincipale(JeuControleur controleur){
super("Gestion des poursuites d'études");
this.controleur = controleur;
this.construitMenu();
this.construitFenetre();
this.setSize(1300, 700);
this.setVisible(true);
// Arrête l'application à la fermeture de la fenêtre
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public JPanel getMonPanel() {
return monPanel;
}
private void construitFenetre(){
this.setLayout(new BorderLayout());
this.creePanelHaut();
JLabel grosTitre = new JLabel("Gestion poursuites études");
// Modif de la police du label
grosTitre.setFont(new Font(Font.SANS_SERIF, Font.ITALIC,32));
// Ajout des labels au panel
monPanel.add(grosTitre);
this.ajoutPanel(monPanel);
}
private void creePanelHaut(){
JPanel p = new JPanel(new FlowLayout());
JLabel titre = new JLabel("IUT de Metz - Département informatique");
p.add(titre);
this.add(p, BorderLayout.WEST);
}
public void ajoutPanel(JPanel monPanel){
this.add(monPanel, FlowLayout.CENTER);
}
public JPanel creerPanelJTable(JTable maTable){
JPanel p = new JPanel(new GridBagLayout());
maTable.revalidate();
maTable.setFont(new Font(Font.SERIF,Font.PLAIN,10));
JScrollPane scrollTab = new JScrollPane(maTable);
scrollTab.setViewportView(maTable);
p.add(scrollTab);
return monPanel;
}
private void construitMenu(){
/**
* Creation de la barre de menu
*/
JMenuBar barre = new JMenuBar();
this.setJMenuBar(barre);
/**
* Creation des menu, attaché à la barre
*/
JMenu mFichier = new JMenu("Fichier");
JMenu mEtudiants = new JMenu("Etudiants");
JMenu mPoursuites = new JMenu("Poursuites");
JMenu mAide = new JMenu("Aide");
barre.add(mFichier);
barre.add(mEtudiants);
barre.add(mPoursuites);
barre.add(mAide);
/**
* Creation d'items
*/
JMenuItem iQuit = new JMenuItem("Quitter");
//iQuit.addActionListener(this);
JMenuItem iImport = new JMenuItem("Import des étudiants", KeyEvent.VK_I);
//iImport.addActionListener(this);
/**
* Ajout des items dans les différents menus
*/
mFichier.add(iQuit);
mEtudiants.add(iImport);
/**
* Ajout du controleur
*/
iQuit.addActionListener(this.controleur);
iImport.addActionListener(this.controleur);
}
public void removeMonPanel(){
monPanel.remove(this);
}
public void actualiserFenetre(){
this.repaint();
}
public void fermer(){
this.setVisible(false);
}
}
--------------------------------------------
public static void main(String[] args) {
// TODO code application logic here
JeuControleur jeu = new JeuControleur();
FenetrePrincipale vue = new FenetrePrincipale(jeu);
jeu.setVue(vue);
}
Pour plus de précision, la gestion du bouton quitter marche parfaitement alors que le bouton Import étudiants ne fonctionne pas.. J'arrive à afficher les noms de mon fichier Excel dans la console, mais je n'arrive pas à ajouter le panel dans la feneêtre principale.
Pourtant, je créer le JTable, ensuite le panel puis j'ai crée une fonction qui ajoute le panel à la fenêtre et je crains que c'est celle-ci qui ne fonctionne pas !
Vous avez des idées ?
Merci d'avance!
A voir également:
- [JAVA] Controleur
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Eclipse java - Télécharger - Langages