JAVA - JMenu построен из файла
Я хотел бы построить JMenu, используя содержимое текстового файла с этим макетом / внешним видом (# для разделителя; JMenu X и JMenuItem X будут заменены последовательностями String):
JMenu 1 # JMenuItem 1
JMenu 1 # JMenuItem 2
JMenu 1 # JMenuItem 3
JMenu 2 # JMenuItem 1
JMenu 2 # JMenuItem 2
JMenu 3 # JMenuItem 1
JMenu 3 # JMenuItem 2
JMenu 3 # JMenuItem 3
JMenu 3 # JMenuItem 4
Как я могу написать цикл, который будет печатать содержимое файла в каждый из соответствующих пунктов меню?
Спасибо за вашу поддержку.
1 ответ
Вот цикл, который работает:
FileReader monFichier = null;
BufferedReader tampon = null;
ArrayList<JMenu> tJMenu = new ArrayList<JMenu>();
try {
monFichier = new FileReader("param/tableMenu.bat");
// Connecte les flux :
tampon = new BufferedReader(monFichier);
while (true) {
// Lit une ligne du fichier :
String ligne = tampon.readLine();
// Vérifie la fin de fichier
if (ligne == null)
break;
//On récupère la position du "#" :
int pos = ligne.indexOf("#");
//On renseigne nos tableaux :
boolean existant = false;
for (JMenu m : tJMenu)
{
if (m.getText().equals(ligne.substring(0, pos-1)))
{
m.add(new JMenuItem(ligne.substring(pos+2, ligne.length())));
existant = true;
}
}
if (!existant)
{
tJMenu.add(new JMenu(ligne.substring(0, pos-1)));
for (JMenu m : tJMenu)
{
if (m.getText().equals(ligne.substring(0, pos-1)))
{
m.add(new JMenuItem(ligne.substring(pos+2, ligne.length())));
}
}
}
} // Fin du while
JMenuBar menu = new JMenuBar();
JFrame f = new JFrame();
JPanel p = new JPanel();
f.setContentPane(p);
f.setJMenuBar(menu);
f.setSize(600, 800);
f.setVisible(true);
for (JMenu m : tJMenu)
{
menu.add(m);
}
} catch (IOException exception) {
exception.printStackTrace();
} finally {
try {
tampon.close();
monFichier.close();
} catch(IOException exception1) {
exception1.printStackTrace();
}
}
А вот и текстовый файл:
JMenu 1 # JMenuItem 1.1
JMenu 1 # JMenuItem 2.1
JMenu 1 # JMenuItem 3.1
JMenu 2 # JMenuItem 1.2
JMenu 2 # JMenuItem 2.2
JMenu 3 # JMenuItem 1.3
JMenu 3 # JMenuItem 2.3
JMenu 3 # JMenuItem 3.3
JMenu 3 # JMenuItem 4.3