LINUX.ORG.RU

Re: Как включить AA в приложениях написанных на Java?

найдено когда-то на просторах инета
усё на испанском, но в принципе понятно :)))

Hola. 
El otro dia, tonteando con el api de java2d, encontre una pequeña gema
(un método) que me permitió solucionar algo que buscaba hace mucho
tiempo, mejorar el aspecto de las fuentes de swing (sobre todo en linux
que son horribles). Con este pequeño hack conseguiremos antialiasing en
todos los componentes. Para ello es necesario que tengais instalado java
1.2 o superior, que incluye el api de java2d y lo utiliza para el
renderizado de sus componentes.

Para llevar acabo este hack, tenemos que modificar el runtime de java,
asi que lo primero que debeis hacer, es hacer una copia de seguridad del
mismo.

1. Hacemos un backup de $JAVA_HOME/jre/lib/rt.jar en algun lugar seguro.
JAVA_HOME es el directorio base de tu jdk.

2. Creamos un directorio en /tmp por ejemplo llamado java-src.
	
	mkdir /tmp/java-src


3. Cambiamos al directorio /tmp/java-src y descomprimimos en el las
fuentes del runtime de java que vienen con el jdk. Estas suelen estar en
$JAVA_HOME/src.jar

	cd /tmp/java-src

	unzip $JAVA_HOME/src.jar
	o bien
	jar xvf $JAVA_HOME/src.jar

Ahora teneis en el directorio las fuentes de vuestra implementación de
java. cambiais al directorio javax/swing

	cd javax/swing

Editais el codigo de JComponent.java y buscais el método 
	
	paintComponent(Graphics g)

En la primera linea del método, insertais lo siguiente:

	Graphics2D g2 = (Graphics2D) g;
	g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
          RenderingHints.VALUE_ANTIALIAS_ON );
	<... resto del metodo ...>

Este cast del objeto Graphics del m&#233;todo es necesario por que esta
funci&#243;n es propia del api de java2D, no del Objeto Graphics primitivo
que se utilizaba en awt. Ya he comentado que apartir de java1.2, swing
utiliza java2D para renderizar los componentes.
Todo listo, ahora solo queda recompilar la clase JComponent y sustituir
las clases del rt.jar por las nuevas clases generadas.

	javac JComponent.java



4. Creamos el directorio /tmp/java-bin y cambiamos a el:

	mkdir /tmp/java-bin
	cd /tmp/java-bin

5. Descomprimimos el runtime en este directorio.
	
	unzip $JAVA_HOME/jre/lib/rt.jar
	o bien
	jar xvf $JAVA_HOME/jre/lib/rt.jar

Esto nos creara una estructura de directorios igual que la que hemos
obtenido al descomprimir el src.jar

6. Cambiamos al directorio javax/swing y sustituimos los
JComponentXX.class por los nuestros

	cd javax/swing
	cp /tmp/java-src/javax/swing/*.class ./

7. Verificamos que los ficheros JComponentXX.class del directorio son
los nuestros mirando la fecha de los ficheros y ya estamos listos para
empaquetar.
	
	cd /tmp/java-bin
	jar -Mcvf rt.jar *

8. Sustituimos el rt.jar de $JAVA_HOME/jre/lib por el nuevo y listo!
	(Recordad que deberiais hacer una copia del original primero,
		por si algo os sale mal)
	
	cp rt.jar $JAVA_HOME/jre/lib/rt.jar


Espero que me comenteis si os ha funcionado y que disfruteis de el nuevo
aspecto de las fuentes.

Saludos
Rubio Jr.
	
-- 
Sergio Rubio <sergio.rubio@hispalinux.es>

Ishjert ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.