IHM: bouton annuler ? importer une photo ?

Fermé
linquisiteur - 27 juil. 2014 à 11:47
 linquisiteur - 27 juil. 2014 à 20:54
Bonjour, pour me préparer à ma 2eme année d'informatique j'essaie de prendre de l'avance sur la matière (et m'occuper). Mon projet est simple. Créer une IHM où l'on peut simplement créer et enregistrer des diaporamas personnalisé afin de pouvoir les revoir par la suite en ouvrant ce programme.

le code:

package diaporama;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.KeyStroke;
 
public class Fenetre extends JFrame{
	
	  private JMenuBar menuBar = new JMenuBar();
	  
	  private JMenu 
	  		  menuFichier = new JMenu("Fichier"),
			  menuEdition = new JMenu("Edition"),
			  sousMenuVitesse = new JMenu("Vitesse"),
			  menuInfo = new JMenu("À propos");

	  private JMenuItem 
	  		  itemNewDiapo = new JMenuItem("Nouveau"),
	  		  itemOuvrir = new JMenuItem("Ouvrir"),
			  itemFermer = new JMenuItem("Fermer"),
			  itemLancer = new JMenuItem("Lancer"),
			  itemQuitter = new JMenuItem("Quitter"),
			  itemStop = new JMenuItem("Arrêter"),
			  itemInfo = new JMenuItem("?");
	 
	  ButtonGroup bg = new ButtonGroup();
	  private JRadioButton 
	  		  jcmiVitLente = new JRadioButton("Lente"),
			  jcmiVitNormal = new JRadioButton("Normal"),
			  jcmiVitRapide = new JRadioButton("Rapide");



	  
  public Fenetre(){
    this.setTitle("Diaporama");
    this.setSize(1200, 800);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setLocationRelativeTo(null);
    
    
    JPanel pan = new JPanel();
    pan.setBackground(Color.DARK_GRAY);        
    this.setContentPane(pan);               

    
    // On initialise nos menus 
    
    // Menu Fichier
    itemNewDiapo.addActionListener(new ActionListener(){
    	public void actionPerformed(ActionEvent argo0){
    		CreateDiapo();
    	}
    });
    this.menuFichier.add(itemNewDiapo);
    this.menuFichier.add(itemOuvrir);
    this.menuFichier.add(itemQuitter);
    
    // Ajout d'un séparateur
    this.menuFichier.addSeparator();
    itemFermer.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent arg0) {
        System.exit(0);
      }        
    });
    this.menuFichier.add(itemFermer);
    
    // Menu Edition
    // on met les bouttons radio dans un buttonGroup pour limiter a 1 actif
    jcmiVitNormal.setSelected(true);
    bg.add(jcmiVitLente);
    bg.add(jcmiVitNormal);
    bg.add(jcmiVitRapide);
    
    // On ajoute les éléments dans notre sous-menu
    this.sousMenuVitesse.add(jcmiVitLente);
    this.sousMenuVitesse.add(jcmiVitNormal);
    this.sousMenuVitesse.add(jcmiVitRapide);

    
    // Ajout du sous-menu dans notre menu
    this.menuEdition.add(itemLancer);
    this.menuEdition.add(itemStop);
    this.menuEdition.add(this.sousMenuVitesse);
    
    
    // Menu Info
    this.menuInfo.add(itemInfo);
    itemInfo.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent arg0) {
            fenetreInfo();
          }
        });
    
    
    // Ajout des menus dans la barre de menus et ajout de mnémoniques !
    // L'ordre d'ajout va déterminer l'ordre d'apparition dans le menu de gauche à droite
    // Le premier ajouté sera tout à gauche de la barre de menu et inversement pour le dernier
    itemLancer.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, KeyEvent.CTRL_MASK));
    itemStop.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK));
    itemFermer.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_MASK));
    itemNewDiapo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK));
    itemOuvrir.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK));
    itemQuitter.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_MASK));
    
    menuFichier.setMnemonic('F');
    this.menuBar.add(menuFichier);
    menuEdition.setMnemonic('E');
    this.menuBar.add(menuEdition);
    menuInfo.setMnemonic('P');
    this.menuBar.add(menuInfo);
    
    this.setJMenuBar(menuBar);
    
    this.setVisible(true);
    
    }
  
  private void CreateDiapo(){
	  boolean nomOk = true;
	  System.out.println("test1");
	  String nom = JOptionPane.showInputDialog(null, "Nom du diaporama:     (entre 1 et 20 charactère, sans espace)", "Nouveau diaporama", JOptionPane.QUESTION_MESSAGE);
	  if(nom.length()<=20 && nom.length()>0){
		  for(int i=0;i<nom.length() && nomOk == true;i++){
			  if(nom.charAt(i)==' ') nomOk = false;
			  System.out.println(i);
		  }
	  }else nomOk = false;
	  System.out.println("test2");
	  
	  if(nomOk){
		 boolean outOk = true;
		  // on ajoute le nom de la diapo à la liste des dossiers diaporama
		try {
			FileWriter fOut = new FileWriter("listeDiaporama.txt", true);
			PrintWriter pOut = new PrintWriter(fOut);
			for(int i=0;i<20;i++){
				if(i < nom.length()){
					pOut.print(nom.charAt(i));
				}else{
					pOut.print(' ');
				}
			}		
			fOut.close();
			pOut.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			outOk = false;
		} catch (IOException e) {
			e.printStackTrace();
			outOk = false;

		}
		
		// si le dosier n'a pas pu être créé
		if(outOk == false)
			JOptionPane.showMessageDialog(null, "Problème lors de la création du dossier" + nom, "Erreur ", JOptionPane.ERROR_MESSAGE);
		else{
			new File(nom).mkdir();
		}
	  }
  }
  
  public void fenetreInfo(){
	  String info = "Programme créer par Jordan M.\n";
	  info += "Le but est de me familiariser avec les IHMs.";
      JOptionPane.showMessageDialog(null, info, "Informations", JOptionPane.INFORMATION_MESSAGE);
  }
}



Pour le moment je suis confronté à deux problèmes.

1)

Dans la fonction: private void CreateDiapo()
le programme demande à l'utilisateur d'entrée un nom de dossier (qui se créer j'ai vérifier)
mais il peut aussi annuler lorsque la balise lui demande. Lors ce que il annule la demande de nom j'ai plusieurs erreur dans la console (mais aucun crash apparent dans le programme) Mais je n'aime pas laisser cette erreur.

Existe t'il une méthode simple pour vérifier que le dossier n'existe pas encore?


2)

J'aimerais importer des photos mais comment faire?
j'ai cru comprendre avec l'objet: JFileChooser mais je n'arrive pas à l'intégrer (aucun bon effet).
De plus je ne sais pas si il est préférable de copier les images importer où garder leur localisation en mémoire(dans un fichier).





Merci d'avance :)

1 réponse

linquisiteur
27 juil. 2014 à 20:54
de l'aide svp :/
0