Вопрос:

JAVA - JMenu построен из файла

java jmenu jmenuitem

20 просмотра

1 ответ

57 Репутация автора

Я хотел бы построить 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

Как я могу написать цикл, который будет печатать содержимое файла в каждый из соответствующих пунктов меню?

Спасибо за поддержку.

Автор: Fred Источник Размещён: 22.08.2016 08:27

Ответы (1)


0 плюса

57 Репутация автора

Вот цикл, который работает:

      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
Автор: Fred Размещён: 22.08.2016 09:15
Вопросы из категории :
32x32