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
|
|
|
}
|