Files
SAE32_2025/src/fr/iutfbleau/sae/vconverter/CodeTablePanel.java
T

110 lines
4.1 KiB
Java
Raw Normal View History

2026-01-03 13:08:16 +01:00
package fr.iutfbleau.sae.vconverter;
import javax.swing.*;
import java.awt.*;
import java.util.Map;
/**
* Panneau d'affichage des codes Huffman et canoniques.
* Affiche les codes pour chaque composante de couleur (rouge, vert, bleu).
* @author Algassimou
*/
public class CodeTablePanel extends JPanel {
// Zones de texte pour les codes Huffman
private JTextArea textHuffRouge, textHuffVert, textHuffBleu;
// Zones de texte pour les codes canoniques
private JTextArea textCanonRouge, textCanonVert, textCanonBleu;
/**
* Constructeur qui initialise l'interface utilisateur.
*/
public CodeTablePanel() {
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
// Titre pour les codes Huffman
JLabel titreHuff = new JLabel("Codes Huffman");
titreHuff.setFont(new Font("SansSerif", Font.BOLD, 16));
add(titreHuff);
add(Box.createVerticalStrut(10));
// Création des zones de texte pour les codes Huffman
textHuffRouge = creerZoneTexte("Rouge");
textHuffVert = creerZoneTexte("Vert");
textHuffBleu = creerZoneTexte("Bleu");
// Séparateur
add(Box.createVerticalStrut(20));
// Titre pour les codes canoniques
JLabel titreCanon = new JLabel("Codes Canoniques");
titreCanon.setFont(new Font("SansSerif", Font.BOLD, 16));
add(titreCanon);
add(Box.createVerticalStrut(10));
// Création des zones de texte pour les codes canoniques
textCanonRouge = creerZoneTexte("Rouge (Canonique)");
textCanonVert = creerZoneTexte("Vert (Canonique)");
textCanonBleu = creerZoneTexte("Bleu (Canonique)");
}
/**
* Crée une zone de texte avec une étiquette.
* @param titre Le titre à afficher au-dessus de la zone de texte
* @return La zone de texte configurée
*/
private JTextArea creerZoneTexte(String titre) {
add(new JLabel(titre + ":"));
JTextArea zone = new JTextArea(8, 30);
zone.setEditable(false);
zone.setFont(new Font("Monospaced", Font.PLAIN, 12));
JScrollPane scroll = new JScrollPane(zone);
scroll.setPreferredSize(new Dimension(300, 120));
add(scroll);
add(Box.createVerticalStrut(10));
return zone;
}
/**
* Met à jour l'affichage des codes Huffman.
* @param rouge Les codes pour la composante rouge
* @param vert Les codes pour la composante verte
* @param bleu Les codes pour la composante bleue
*/
public void updateCodes(Map<Integer, String> rouge,
Map<Integer, String> vert,
Map<Integer, String> bleu) {
mettreAJourZoneTexte(textHuffRouge, rouge);
mettreAJourZoneTexte(textHuffVert, vert);
mettreAJourZoneTexte(textHuffBleu, bleu);
}
/**
* Met à jour l'affichage des codes canoniques.
* @param rouge Les codes pour la composante rouge
* @param vert Les codes pour la composante verte
* @param bleu Les codes pour la composante bleue
*/
public void updateCanonicalCodes(Map<Integer, String> rouge,
Map<Integer, String> vert,
Map<Integer, String> bleu) {
mettreAJourZoneTexte(textCanonRouge, rouge);
mettreAJourZoneTexte(textCanonVert, vert);
mettreAJourZoneTexte(textCanonBleu, bleu);
}
/**
* Met à jour le contenu d'une zone de texte avec les codes fournis.
* @param zone La zone de texte à mettre à jour
* @param codes Les codes à afficher
*/
private void mettreAJourZoneTexte(JTextArea zone, Map<Integer, String> codes) {
StringBuilder sb = new StringBuilder();
for (Map.Entry<Integer, String> entry : codes.entrySet()) {
sb.append(String.format("%3d : %s%n", entry.getKey(), entry.getValue()));
}
zone.setText(sb.toString());
}
2025-12-20 00:30:14 +01:00
}