Red de conocimiento informático - Aprendizaje de programación - Programación de interfaz gráfica Java

Programación de interfaz gráfica Java

/*

*Hice un visor de imágenes y la rueda de desplazamiento y Ctrl ↑↓ ajustaron el tamaño.

*/

Importar Java. awt. borderlayout;

Importar Java. cola;

Importar Java.awt.graphics;

Importar Java.awt.image;

Importar Java.awt.toolkit;

Importar evento de acción Java .

Importar evento de clave Java .

Importar Java .evento de rueda de ratón;

Importar evento de rueda de ratón de Java. >Importar Java.io.file;

Importar javax.swing.jbutton;

Importar javax.swing.jcomponent;

Importar selector de archivo javax.swing.j ;

Importar javax.swing .jframe;

Importar javax.swing .filtro de archivos;

La clase pública ScaleImageTest extiende JFrame.

public ScaleImageTest() {

this . setdefaultcloseoperative(EXIT _ ON _ CLOSE);

this.setSize(500, 400); = new JButton(" OPEN ");

open.addActionListener(new ActionListener() {

acción de anulación pública realizada (evento de acción e){

jfile selector selector = nuevo selector de jfile(" . ");

selector . setmultiselectenabled(false);

selector addchooseblefilefilter(nuevo filtro de archivo(){

. @override

público booleano aceptar(archivo f) {

if (f.isDirectory())

devuelve verdadero

Nombre de cadena = f.getName(). toLowerCase();

if (nombre.endsWith(.jpg") || nombre.endsWith(".bmp")

|| nombre.endsWith(".

png")

|| nombre.endsWith(".gif")

|| nombre.endsWith(".ico")

|| nombre. termina con(".jpeg"))

Devuelve verdadero

Devuelve falso

}

@Overwrite

Cadena pública getDescription() {

Devuelve "archivo de imagen";

}

});

selector showopendialog(escala de imagen. probar esto);

archivo archivo = selector .getselectedfile();

if(archivo==null)

Retorno;

imagen imagen = kit de herramientas . getdefaulttoolkit().getImage(

archivo .getpath());

panel.setImage(imagen);

}< / p>

});

panel = new ScaleImagePanel(null, 1);

this.add(panel, BorderLayout.center);

this.add(open, BorderLayout. South);

addkey oyente(nuevo oyente de clave(){

Clave de anulación pública (evento clave e) {

int code = e . obtener código clave();

boolean ctrl down = e . iscontroldown();

double Inc = 0;

if( ctrl abajo ampcode == KeyEvent.VK_UP) {

inc = INC

} else if(ctrl abajo amp; ampcode == KeyEvent.VK_DOWN) {

INC =-INC;

} De lo contrario {

Retorno;

}

doble nuevo pro = panel getproportion() Inc. ;

if(nuevo pro lt;ScaleImagePanel. MIN_PRO

| nuevopro gtScaleImagePanel.

MAX_PRO)

Regresar;

panel establecer proporción (nuevo profesional);

}

clave pública nula liberada (evento clave e ){

}

vacío público escrito(KeyEvent e) {

}

});

this .

doble nuevo pro = panel . getproportion() INC * rotación;

if(nuevo pro lt;ScaleImagePanel.MIN_PRO

| | newpro gtScaleImagePanel.

MAX_PRO)

Regresar;

panel establecer proporción(nuevo profesional);

}

});

}

Doble inc final estático privado = 0,25

Panel ScaleImagePanel privado;

JButton privado abierto;

Clase final estática pública ScaleImagePanel extiende JComponent {

panel de imagen de escala pública (Imagen Imagen, proporción int) {

this.setImage(imagen);

this.setProportion(proporción) ;

}

public double getProportion() {

Devuelve la proporción;

}

public void setProportion (doble proporción) {

if (proporción ltMIN _ PRO | "," MAX_PRO "]";

this.proportion=proporción;

this. validar();

this.repaint();

}

Imagen pública getImage() {

Devuelve la imagen <; /p>

}

public void setImage(Imagen Imagen){

this.image = image

this

this . repaint();

}

@Override

Dimensión pública getPreferredSize() {

Devuelve el nuevo dimensión ((int)(image . getwidth(this)* proporción),

(int) (image.getHeight(this) *scale));

}

@overlay

Componente de pintura en blanco protegido (gráfico g) {

if (imagen == null)

Devolver;

dimensión tamaño = getSize();

dimensión presize = getPreferredSize();

int x =(tamaño . ancho-pretamaño . ancho)/2

int y =(tamaño . altura-presimensionado . altura)/2;

p>

g.drawImage(imagen, x, y, pretamaño.ancho, pretamaño.alto, esto);

}

Proporción privada = 1;

Imagen imagen privada;

Privada estática final doble MAX_PRO = 8;

Privada doble final estático MIN_PRO = 0,25

}

/**

* @param args

*/

>

Public void static main(String[] args) {

cola de eventos invocar más tarde(new Runnable(){

Public void runnable(){

Nueva prueba de imagen de escala()

}

});

}

}