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()
}
});
}
}