Escribir un navegador en java
Importar Java evento . evento;
Importar Java . awt . evento de escucha
Importar Java . >
Importar icono javax.swing.image;
Importar botón javax.swing.j;
Importar selector de archivo javax.swing.j;
Importar javax .swing.jframe;
Importar javax.jmenu;
Importar javax.jmenubar; >
Importar javax.swing.jpanel;
La clase pública ImageGallery extiende JFrame para implementar ActionListener {
Public static final int G_WIDTH = 400, G_HEIGHT = 620
Int final estático público L_WIDTH = 1200, L_HEIGHT = 520
Int final estático público MAX_R = 3, MAX_C = 2;
int final estático público GRID = 1, LARGE = 2 ;
Selector de JFileChooser privado
Barra de herramientas JMenuBar privado;
Menú JMenu privado;
El JMenuItem privado está abierto;
Lista de matrices privadas<String>Path;
JPanel privado mostrandoPanel, panel de botones
página int privada = 1;
recuento de int privado = 0;
private int showType = GRID
private int pageMax
JButton privado último, siguiente, grande, cuadrícula
Biblioteca de imágenes pública(){
this.setTitle("Biblioteca de imágenes 0.1 ");
this.setBounds(100, 100, G_WIDTH, G_HEIGHT);
p>
this .setdefaultcloseoperative(JFrame . EXIT _ ON _ CLOSE);
toolBar = new JMenuBar();
chooser = nuevo selector de archivos j();
chooser.setCurrentDirectory(new java . io.File(" . "));
selector .
Solo directorio);
menu = new JMenu(" Archivo ");
toolBar.add(menu);
open = new JMenuItem(" abrir "). );
abrir .addactionlistener(this);
menu.add(abrir);
rutas = new ArrayList & ltstring& gt() ;
this.setJMenuBar(Barra de herramientas);
mostrando panel = nuevo JPanel();
panel de botones = nuevo JPanel();
último = nuevo JButton(" último ");
último. addactionlistener(este);
siguiente = nuevo JButton(" siguiente "); esto);
grande = nuevo JButton(" grande ");
grande . addactionlistener(este);
grid = nuevo JButton (" cuadrícula ") ;
cuadrícula . addactionlistener(this);
buttonPanel.add(último);
buttonPanel.add(grande);
buttonPanel.add(grid);
buttonPanel.add(siguiente);
this.add(buttonPanel, BorderLayout. South);
this add(. mostrando el panel);
este conjunto visible(true);
}
public void doOpen() { p>
int resultado = selector . showopendialog(null);
if (resultado == JFileChooser . APPROVE_OPTION) {
cadena directorio = selector getselectedfile().
getPath();
this.getAllImage(directorio);
for (String s: this.paths) {
system out. ;
}
esto. mostrando la imagen();
}
}
public void getAllImage( Directorio de cadenas) {
rutas .clear();
página = 1;
cuenta = 0
Archivo = Nuevo; archivo (directorio);
if (file.isDirectory()) {
cadena[]lista = archivo lista();
for (String s. : lista) {
cadena ruta = directorio+" \ \ "+s;
Temperatura del archivo = nuevo archivo (ruta); isDirectory()) {
this.paths.add(ruta);
}
}
}
}
Página de cambio de anulación pública (página int) {
if (! paths.isEmpty()) {
Cambiar (tipo de visualización) {< / p>
Cuadrícula de casos:
esta página += página;
if (esta.página == 0) {
esta página =. 1;
}
Si (esta.página & gtpageMax) {
esta.página = pageMax
}
Pausa;
Caso grande:
esta . cuenta+= página;
if(cuenta & lt; 0) {
cuenta = 0;
}
if(cuenta & gt; rutas.tamaño() - 1) {
cuenta = rutas tamaño() -. 1;
}
Romper;
}
esto muestra la imagen();
} <. /p>
}
public void mostrandoImagen() {
this remove(mostrando panel);
mostrando panel = new JPanel();
int tamaño = rutas tamaño();
int MAX = MAX _ R * MAX _ C
pageMax = (tamaño % max == 0; ? size/max:size/max+1);
Cambiar (tipo de visualización) {
Cuadrícula de casos:
this.setBounds(100, 100, G_WIDTH , G_HEIGHT);
showingPanel.setLayout(new GridLayout(MAX_R, MAX_C-1));
int I = (página-1)* max;
int j = página * max
for(;i<Johnson & Johnson.
&i<size;i++) {
ruta de cadena = rutas . get(I);
showingPanel.add(new ImagePanel(ruta));
} p>
Pausa;
Caso grande:
int izquierda = cuenta-1;
int derecha = cuenta+1
this.setBounds(100, 100, L_WIDTH, L_HEIGHT);
showingPanel.setLayout(new GridLayout(1, 2));
if (izquierda & gt; = 0). ) {
mostrando panel . add(nuevo panel de imagen(rutas . get(izquierda))
} En caso contrario {
showingPanel.add(nueva imagen). panel(" ");
}
mostrando panel add(new image panel(paths . get(count)));
if(right<size) {
mostrando panel . add(nuevo panel de imagen(paths . get(right)));
}else{
showingPanel.add(nuevo panel de imagen). (" ");
}
Break;
}
this.add (mostrandoPanel, BorderLayout. Center ); p>
mostrando panel .actualizar ui();
}
/**
* @ param args
* /
Public static void main(String[] args) {
//TODO fragmento de método generado automáticamente
Nueva galería de imágenes();
}
La clase ImagePanel extiende JPanel {
Imagen de icono de imagen privada;
ImagePanel (ruta de cadena) {
imagen = new ImageIcon(ruta);
}
Icono de imagen pública getImageIcon() {
Devolver esta imagen
}
@Overlay
Componente de pintura en blanco protegido (gráfico g) {
// TODO método generado automáticamente Stub
g.drawImage(image.getImage (), 0, 0, this.getWidth(), this
.
getHeight(), this);
}
}
@override
acción de anulación pública realizada (evento de acción e){
//TODO código auxiliar de método generado automáticamente
string key = e. getactioncommand();
system out . p>if (key.equals("open")) {
doOpen();
} else if (key.endsWith("last")) {
cambiar página(-1);
} else if (key.endsWith("next")) {
cambiar página(1);
} else if(key . termina con(" grande ")){
if (!paths.isEmpty()) {
count = 0;
showType = LARGE
mostrando imagen();
}
} else if (key.endsWith("grid")) {
if (!paths.isEmpty()) {
página = 1;
showType = GRID
mostrando imagen();
}
}
}
}