probleme UNICODE sur java.awt.List

Le
phil89
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
TestMan
Le #17942341
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
phil89
Le #17943151
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);
}
}
phil89
Le #17943141
Mon PC est un XP pro, est c'est une applet qui utilise le dernier JRE.
Elle a ete compile en JRE1.5
Mayeul
Le #17943821
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
phil89
Le #17944701
Oui le JList fonctionne mais mixer du AWT et du Swing je voulait
eviter, cela est déconseille

Merci
phil89
Le #17948871
Et
System.setProperty("file.encoding","UTF-8") ;
sur mon applet Signe ?
TestMan
Le #18227801
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
Publicité
Poster une réponse
Anonyme