Bonjour, pour me préparer à ma 2e 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és afin de pouvoir les revoir par la suite en ouvrant ce programme.
Le code :

package diaporama;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
 
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 :)