Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme UNICODE sur java.awt.List

7 réponses
Avatar
phil89
Bonsoir

J'ai un vieux projet developp=E9 en AWT et avec un composant comprenant
une zone de texte et une liste d=E9roulante java.awt.List .
Ce projet recoit desormais des donn=E9es unicode le \u15F
Ma question est simplement de savoir si il n'y a pas un probleme de
conversion UNICODE sur le java.awt.list ?
Merci d'avance
Philippe

7 réponses

Avatar
TestMan
phil89 wrote:
Bonsoir

J'ai un vieux projet developpé en AWT et avec un composant comprenant
une zone de texte et une liste déroulante java.awt.List .
Ce projet recoit desormais des données unicode le u15F
Ma question est simplement de savoir si il n'y a pas un probleme de
conversion UNICODE sur le java.awt.list ?
Merci d'avance
Philippe




Bonjour,

Quel OS / Versions / etc ? D'où vienent les données affichées ?

A+
TM
Avatar
phil89
Bonjour

Les donnnées viennent d'un applicatif externe.
Quand je regarde en mode debug Les items cela est Bon.
J'ai un petit proto ou le caractere UNICODE TURC est mauvais.
Le changement de fonte n'y change rien

Cordialement
Philippe

import awtlist2.Applet1;

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class List2 extends Applet implements ItemListener {
/* Declaration */
private LayoutManager Layout;
private List Selector;
private Font SansSerif;

public List2 () {
/* Declaration */
String [] ColorList;
int i;

/* Instantiation */
ColorList = new String [9];
// SansSerif = new Font ("SansSerif", Font.BOLD, 14);
SansSerif = new Font ("Dialog", Font.BOLD, 14);
SansSerif = new Font ("Arial", Font.BOLD, 14);
Layout = new FlowLayout ();
Selector = new List ();

/* Decoration */
ColorList [0] = "Red";
ColorList [1] = "Magenta";
ColorList [2] = "Blue";
ColorList [3] = "Cyan";
ColorList [4] = "Green";
ColorList [5] = "Yellow";
ColorList [6] = "White";
ColorList [7] = "Gray";
ColorList [8] = "Blau015fck"; //test caractere TURC
for (i = 0; i < ColorList.length; ++i) {
Selector.add (ColorList [i]);
}
Selector.setBackground (Color.yellow);
Selector.setForeground (Color.red);
Selector.setFont (SansSerif);

/* Location */
setLayout (Layout);
add (Selector);

/* Configuration */
Selector.addItemListener (this);

/* Initialization */
Selector.select (5);
setBackground (Color.yellow);
}

public void itemStateChanged(ItemEvent e) {
int Selection;
Selection = Selector.getSelectedIndex();
if (Selection == 0) {
setBackground (Color.red);
} else if (Selection == 1) {
setBackground (Color.magenta);
} else if (Selection == 2) {
setBackground (Color.blue);
} else if (Selection == 3) {
setBackground (Color.cyan);
} else if (Selection == 4) {
setBackground (Color.green);
} else if (Selection == 5) {
setBackground (Color.yellow);
} else if (Selection == 6) {
setBackground (Color.white);
} else if (Selection == 7) {
setBackground (Color.gray);
} else if (Selection == 8) {
setBackground (Color.black);
}
}

public static void main(String[] args) {
List2 applet = new List2();
Frame frame = new Frame();
frame.addWindowListener(new WindowAdapter() { public void
windowClosing(WindowEvent e) { System.exit(0); } } );
frame.add(applet, BorderLayout.CENTER);
frame.setTitle( "Applet Frame" );
applet.init();
applet.start();
frame.setSize(300, 300);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
frame.setLocation((d.width-frameSize.width)/2, (d.height-
frameSize.height)/2);
frame.setVisible(true);
}
}
Avatar
phil89
Mon PC est un XP pro, est c'est une applet qui utilise le dernier JRE.
Elle a ete compile en JRE1.5
Avatar
Mayeul
phil89 a écrit :
Bonjour

Les donnnées viennent d'un applicatif externe.
Quand je regarde en mode debug Les items cela est Bon.
J'ai un petit proto ou le caractere UNICODE TURC est mauvais.
Le changement de fonte n'y change rien

Cordialement
Philippe



[snip code]

Remarquons que le problème apparaît avec java.awt.List et java.awt.Label
par exemple, mais pas avec java.awt.TextField ni avec les composants de
javax.swing.*

Je sèche sur une cause ou sur une solution, mais un contournement
possible serait d'utiliser javax.swing.JList. Et peut-être de tout
reporter en swing si les mélanges posent problème. Dans les cas simples,
ça marche directement.

--
Mayeul
Avatar
phil89
Oui le JList fonctionne mais mixer du AWT et du Swing je voulait
eviter, cela est déconseille

Merci
Avatar
phil89
Et
System.setProperty("file.encoding","UTF-8") ;
sur mon applet Signe ?
Avatar
TestMan
phil89 a écrit :
Mon PC est un XP pro, est c'est une applet qui utilise le dernier JRE.
Elle a ete compile en JRE1.5



Bonjour,

Effetivement ... je continue à investiguer, car il me semblait que cela
fonctionait avant (il y a longtemps que j'ai testé ça sous les AWT ...
genre 1.2 ou "pire").

Dans tous les cas, si vous devais avoir une appli qui gère l'I18N sans
faille de de façon cohérente d'une plateforme à une autre, je vous
conseille de passer des AWT au Swing. Le changement est mineur et celà
résoudra votre problème en attendant mieux.

A+
TM