Java genera todos los caracteres Unicode
Java muestra todos los caracteres Unicode. El código utiliza principalmente el método drawChars() de Java.awt.Graphics
para dibujar caracteres Unicode. En el proceso de diseño de un programa internacional, no es suficiente poder mostrar caracteres locales. Solo el conjunto de caracteres Unicode puede satisfacer la necesidad de mostrar caracteres en varios idiomas al mismo tiempo. Este ejemplo implementa cómo mostrar caracteres Unicode.
Java muestra todos los métodos de escritura de caracteres Unicode:
1. Escriba la clase UnicodeDisplay, que hereda la clase Jframe e implementa la interfaz ActionListener
. Esta clase es una clase de marco de visualización implementada para mostrar una interfaz gráfica. Esta clase es responsable de inicializar la ventana de visualización y comunicarse con el usuario. La interacción cambia la fuente y el estilo especificados por el usuario.
Visualización Unicode, el código es el siguiente: //¿Importar la biblioteca de clases Java requerida?
import?javax.swing.* ;
importar?java.awt.*;
importar?java.awt.event.*;
¿clase?pública?UnicodeDisplay?extiende?JFrame? implementa?ActionListener?{
int?page?=?0;
UnicodePanel?p;
JScrollBar?b;
Cadena ?fontfamily?=?"Serif";
int?fontstyle?=?Font.PLAIN;
/*Constructor, crea marco, menú y barra de desplazamiento*/
public?UnicodeDisplay(String?name)?{
super(nombre);
p?=?new?UnicodePanel();?//?Crear panel< / p>
p.setBase((char)(page?*?0x100));?//?Inicializar panel
getContentPane().add(p,?"Center"); / /?Centrarlo
//?Crear?y?configurar?una?barra de desplazamiento?y?ponerla?a?la?derecha
b?= ?nuevo ?JScrollBar(Scrollbar.VERTICAL,?0,?1,?0,?0xFF);
b.setUnitIncrement(1);
b.setBlockIncrement(0x10); p>
b.addAdjustmentListener(new?AdjustmentListener()?{
public?void?adjustmentValueChanged(AdjustmentEvent?e)?{
page?=?e. getValue( );
p.setBase((char)(página?*?0x100));
}
});
getContentPane().add(b,?"East");
//?Configura la función de respuesta de mensajes para manejar las solicitudes de cierre de ventanas
this.addWindowListener(new?WindowAdapter() ?{
public?void?windowClosing(WindowEvent?e)?{?System.exit(0);?}
});
// ?Respuesta a las teclas PageUP, PageDown, Up? y Down?
this.addKeyListener(new?KeyAdapter()?{
<p>public?void?keyPressed(KeyEvent?e)?{
int?code?=?e.getKeyCode();
int?oldpage?=?page; p> p>
¿si?((código?==?KeyEvent.VK_PAGE_UP)?||
(código?==?KeyEvent.VK_UP))?{
si? (e.isShiftDown())?page?-=?0x10;
else?page?-=?1;
si?(página?lt;?0) ?página ?=?0;
}
else?if?((código?==?KeyEvent.VK_PAGE_DOWN)?||
(código? == ?KeyEvent.VK_DOWN))?{
if?(e.isShiftDown())?page? =?0x10;
else?page? p>
si?(página?gt;?0xff)?página?=?0xff;
}
si?(página?!=?páginaantigua)?{? // Si se cambia la página de visualización actual
p.setBase((char)?(page?*?0x100));?//?Actualizar la visualización
b.setValue (página); ?//?Actualizar barra de desplazamiento
}
}
});
//?Crear un menú que puede cambiar la fuente de visualización.
JMenuBar?menubar?=?new?JMenuBar();
this.setJMenuBar(menubar);
menubar.add (makemenu("Fuente? Familia",
new?String[]?{"Serif",?"SansSerif",?"Monospaced"},
this));
menubar.add(makemenu("Fuente?Estilo",
new?String[]{
"Simple","Cursiva","Negrita", "BoldItalic"
},?this));
}
2. El método ActionPerformed() se utiliza para procesar cada opción en el submenú: public?void?actionPerformed(ActionEvent?e)?{
String?cmd?=?e.getActionCommand();
if?(cmd.equals("Serif"))?fontfamily?=?"Serif";
else?if?(cmd.equals("SansSerif"))?fontfamily?=? " SansSerif";
else?if?(cmd.equals("Monospaced"))?fontfamily?=?"Monospaced";
else?if?(cmd.equals( " Plain"))?fontstyle?=?Font.PLAIN;
else?if?(cmd.equals("Italic"))?fontstyle?=?Font.ITALIC;
else?if?(cmd.equals("Cursiva"))?fontstyle?=?Font.ITALIC;
p>
else?if?(cmd.equals("Bold"))?fontstyle?=?Font.BOLD;
else?if?(cmd.equals("BoldItalic"))? fontstyle?=?Font.BOLD?Font.ITALIC;
p.setFont(fontfamily,?fontstyle);
}
3. El método Makemenu() se utiliza para crear un menú a partir de una matriz. El código es el siguiente: private?Jmenu?makemenu(String?name,?String[]?itemnames,
ActionListener?listener)<. /p>
{
Jmenu?m?=?new?Jmenu(nombre);
for(int?I?=?0;?I?lt;? itemnames.length;?I )?{
JmenuItem?item?=?new?JmenuItem(itemnames[I]);
item.addActionListener(oyente);
item.setActionCommand (nombres de elementos[I]);
m.add(item);
}
return?m;
}
4. Escribe la clase UnicodePanel, que hereda Jcomponent, y crea la clase UnicodePanel responsable de mostrar Unicode. Es responsable de dibujar caracteres Unicode en una página (máximo 16×16=256): public?static?class?UnicodePanel?extend? {
protected?char?base;?//?Especifique el valor inicial que mostramos
protected?Font?font?=?new?Font("serif",? Font. PLAIN,?18);?//?Especifique la fuente de visualización predeterminada
protected?Font?headingfont?=?new?Font("monospaced",?Font.BOLD,?18); ?Especifique la fuente de encabezado predeterminada
static?final?int?lineheight?=?25;?//?Especifique la altura de una línea para mostrar
static?final?int? charspaceing?=?20;?/?//?Especifica mostrar un ancho de carácter Unicode
static?final?int?x0?=?65;
static?final?int? y0 ?=?40;
/**?Especifique el carácter inicial para comenzar a mostrar y actualizar el Panel?*/
public?void?setBase(char?base)?{
this.base?=?base;
repaint();
}
/**Establece la nueva fuente o estilo utilizado para mostrar y actualizar el panel?*/
public?void?setFont(String?family,?int?style)?{
this.font?=?new?Font(family ,? estilo,?18);
repintar
();
}
/**?¿Dibujar una página de la tabla de caracteres?*/
public?void?paintComponent(Graphics?g)? {
int?start?=?(int)base?amp;?0xFFF0;?//?Establece el carácter de visualización inicial
//?Utiliza la fuente proporcionada para mostrar el encabezado
g.setFont(headingfont);
//?Dibuja 0..F en la parte superior
for(int?i=0;?i ? lt;?16;?i )?{
String?s?=?Integer.toString(i,?16);
g.drawString(s,?x0? ? i*charspacing,?y0-20);
}
//?Dibuja el encabezado a la izquierda.
for(int?i?= ?0 ;?i?lt;?16;?i )?{
int?j?=?start?i*16;
Cadena?s?=?Entero .toString (j,?16);
g.drawString(s,?10,?y0 i*lineheight);
}
//? ¿Dibujar Unicode?Carácter
g.setFont(font);
char[]?c?=?new?char[1];
for(int ?i?=?0;?i?lt;?16;?i )?{
for(int?j?=?0;?j?lt;?16;?j )?{
c[0]?=?(char)(inicio? ?j*16? ?i);
g.drawChars(c, ?0, ?1, ?x0 ?i*charspacing,?y0 j*lineheight);
}
}
}
/**?Devolución dada ¿Resolución?*/
¿pública?Dimensión?getPreferredSize()?{
retorno?nueva?Dimensión(x0? ?16*espaciado de caracteres,
y0 ? ? 16*alto de línea);
}
}
}