import java.awt.*; import javax.swing.*; import java.util.Arrays; public class Fenetre extends JFrame { private String[] modules; private String[] champs; private int[] idChamps; public Fenetre(String[] modules, String[] champs, int[] idChamps) { this.modules = modules; this.champs = champs; this.idChamps = idChamps; int[] nbChampsParModule = new int[this.modules.length]; Arrays.fill(nbChampsParModule, 0); int indexIdChamps = 0; for (int i = 0; i != this.modules.length; i++) { while ((indexIdChamps < this.idChamps.length) && this.idChamps[indexIdChamps] == (i+1)) { nbChampsParModule[i]++; indexIdChamps++; } System.out.println(nbChampsParModule[i]); } System.out.println(Arrays.toString(nbChampsParModule)); this.setSize(200, 500); this.setLocation(100, 100); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 0; gbc.gridy = 0; gbc.fill = GridBagConstraints.BOTH; // Make the component fill its display area entirely gbc.gridwidth = 1; gbc.weightx = 1.0; gbc.weighty = 1.0; for (int i = 0; i != this.modules.length; i++) { gbc.gridheight = nbChampsParModule[i]; JLabel texte = new JLabel(this.modules[i]); texte.setBorder(BorderFactory.createLineBorder(Color.BLACK)); texte.setHorizontalAlignment(JLabel.CENTER); texte.setVerticalAlignment(JLabel.CENTER); this.add(texte, gbc); gbc.gridy += nbChampsParModule[i]; } gbc.gridx = 1; gbc.gridheight = 1; for (int i = 0; i != this.champs.length; i++) { gbc.gridy = i; JLabel texte = new JLabel(this.champs[i]); texte.setBorder(BorderFactory.createLineBorder(Color.BLACK)); texte.setHorizontalAlignment(JLabel.CENTER); texte.setVerticalAlignment(JLabel.CENTER); this.add(texte, gbc); } } }