我想使用具有此布局/外观的文本文件的内容构建JMenu(#为分隔符; JMenu X和JMenuItem X将替换为字符串序列):
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
如何编写一个循环,将文件内容打印到每个相应的菜单项中?
感谢您的支持。
答案 0 :(得分:0)
这是有效的循环:
class menu.foobar {
// stuff here
}
这是文本文件:
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();
}
}