Affichage Matrice

Fermé
aonyx45 Messages postés 1 Date d'inscription jeudi 14 février 2019 Statut Membre Dernière intervention 14 février 2019 - 14 févr. 2019 à 17:45
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 14 févr. 2019 à 21:34
Bonjour,

J'ai une matrice stockée dans un fichier, j'aimerais afficher des cases de différentes couleurs en fonction de chaque coefficient de celle-ci (lire le fichier n'est pas du tout un problème, c'est l'ouverture d'une fenêtre graphique et l'affichage que je ne sais pas faire). Comment puis-je faire ça en java ? Vers quelle bibliothèque/classe ou objet dois-je me tourner ?

Je précise que je n'ai jamais de graphisme en Java excepté des Canvas.

Merci d'avance.



Configuration: Android / Chrome 72.0.3626.105

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
14 févr. 2019 à 21:34
Bonjour,

Voici un exemple, très simple (et donc très moche), ça te fera peut-être avancer un peu.
import java.awt.*;
import javax.swing.*;

public class Main {
    public static void main(String[] args) {
        int nbRows = 3, nbCols = 4;
        int[][] matrix = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };

        JFrame frame = new JFrame();
        GridLayout grid = new GridLayout(nbRows, nbCols);
        frame.setLayout(grid);

        for (int row = 0; row < nbRows; row++) {
            for (int col = 0; col < nbCols; col++) {
                int value = matrix[row][col];
                int red = 20 * value, green = 255 - red, blue = 0;

                JLabel label = new JLabel(String.valueOf(value), JLabel.CENTER);
                label.setOpaque(true);
                label.setBackground(new Color(red, green, blue));
                frame.add(label);
            }
        }

        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
0