You are on page 1of 9

JTable

En muchas ocasiones necesitamos representar una gran cantidad de datos con un JTable con un scroll muy lento y un gran consumo de memoria y recursos. A continuacin el siguiente manual que explica como realiar esta tarea de la forma ms optima posible. Este manual es bsico para utiizar de forma adecuada un gran volumen de datos en una aplicacin en java JTable
Publicado por Ping en 05:48 1 comentarios Etiquetas: ejemplos, JTable

Numero de cifras
Este ejercicio en java divide un nmeros sucesivamente hasta conseguir el nmero de cifras que tiene un entero. Por ejemplo si tu introduces el nmero 3454 el programa te devolver un 4.
import java.io.*; class Cifras { static int total=0; static int x=0; static int numCifras(int x){ while(x!=0){ x=x/10; total+=1; //incrementamos el contador } return total; } public static void main(String[]args) throws IOException{ //BufferedReader para leer de consola BufferedReader leer = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Introduce un nu4mero:"); //leemos una lnea como string String linea = leer.readLine(); /*Convertirmos el string a un nmero. Podras poner *un try y catch para comprobrar errores al convertirlo.Por *ejemplo si introducen un string*/ x= Integer.parseInt(linea); System.out.println("El numero de cifras es:"); //Imprimimos el nmero de lneas System.out.println(numCifras(x)); } }
Publicado por Ping en 03:45 0 comentarios Etiquetas: ejemplos, ejercicios

Buscar en archivos java


Barras de progreso JProgressBar y aplicaciones grficas Este ejemplo busca coincidencias en los archivos a partir de un directorio especificado por el usuario. Problema: Si tenemos una aplicaciones que realiza un proceso que consume un tiempo relativamente largo, es bueno hacer saber al usuario de la aplicacion que la tarea esta siendo procesada y mas o menos el tiempo que queda, lo tipico del mensaje:'El proceso va por el 20%' por ejemplo. Las librerias de Swing en java, tiene unos mecanismos para mostrar este progreso, vamos a hacer un ejemplo de una aplicacion que busca una cadena de texto en todos los ficheros de un directorio espedificado. Fuente original: telepolis.com
import java.awt.GridLayout; import java.awt.Cursor; import java.awt.event.*; import java.util.*; import java.io.*; import javax.swing.*; import java.lang.reflect.InvocationTargetException; ProgressDemo { String startdir; String patt; JTextArea outarea; JFrame frame; JProgressBar progbar; JLabel fileslab; boolean search_flag; // // // // // // //

public class

directorio de busqueda lo que vamos a buscar output area for file pathnames frame barra de progreso numero de ficheros encontrado true si la busqueda esta en progreso

class Search extends Thread { // actualiza el GUI void doUpdate(Runnable r) { try { SwingUtilities.invokeAndWait(r); } catch (InvocationTargetException e1) { System.err.println(e1); } catch (InterruptedException e2) { System.err.println(e2); } } // nos da la lista de los ficheros de un directorio void getFileList(File f, List list) { // recursividad si hay un directorio dentro del mismo if (f.isDirectory()) { String entries[] = f.list();

for (int i = 0; i < entries.length; i++) { getFileList(new File(f, entries[i]), list); } } // para fciheros , se aaden a la lista y se actualiza la barra de progreso else if (f.isFile()) { list.add(f.getPath()); final int size = list.size(); if (size % 100 != 0) { return; } doUpdate(new Runnable() { public void run() { progbar.setValue(size % 1000); } }); } } // comprueba que el fichero contiene la cadena boolean fileMatch(String fn, String patt) { boolean found = false; try { FileReader fr = new FileReader(fn); BufferedReader br = new BufferedReader(fr); String str; while ((str = br.readLine()) != null) { if (str.indexOf(patt) != -1) { found = true; break; } } br.close(); } catch (IOException e) { System.err.println(e); } return found; }

// realiza la busqueda public void run() { List filelist = new ArrayList(); final String sep = System.getProperty("line.separator"); doUpdate(new Runnable() { public void run() { outarea.setText(""); fileslab.setText(""); }

}); // nos da la lista de todos los ficheros y muestra el contador getFileList(new File(startdir), filelist); final int size = filelist.size(); doUpdate(new Runnable() { public void run() { progbar.setValue(0); fileslab.setText("Encontrados " + size + " ficheros, buscando ..."); } }); // configura el monitor de progreso final ProgressMonitor pm = new ProgressMonitor( frame, "Buscando ficheros", "", 0, size - 1); pm.setMillisToDecideToPopup(0); pm.setMillisToPopup(0); // itera entre los ficheros, actualizando el monitor de progreso for (int i = 0; i < size; i++) { final String fn = (String)filelist.get(i); final int curr = i; if (pm.isCanceled()) { break; } final boolean b = fileMatch(fn, patt); doUpdate(new Runnable() { public void run() { pm.setProgress(curr); pm.setNote(fn); if (b) { outarea.append(fn + sep); } } }); } doUpdate(new Runnable() { public void run() { pm.close(); outarea.setCaretPosition(0); fileslab.setText(""); } }); search_flag = false; } } public ProgressDemo() { frame = new JFrame("ProgressDemo"); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); }

});

JPanel paneltop = new JPanel(); JPanel panelbot = new JPanel(); paneltop.setLayout(new GridLayout(5, 1)); JPanel panel1 = new JPanel(); panel1.add(new JLabel("Directorio inicial")); final JTextField dirfield = new JTextField(20); panel1.add(dirfield); JPanel panel2 = new JPanel(); panel2.add(new JLabel("Patron de busqueda")); final JTextField pattfield = new JTextField(20); panel2.add(pattfield); JPanel panel3 = new JPanel(); JButton button = new JButton("Search"); panel3.add(button); JPanel panel4 = new JPanel(); progbar = new JProgressBar(0, 999); panel4.add(progbar); JPanel panel5 = new JPanel(); fileslab = new JLabel(); panel5.add(fileslab); JPanel panel6 = new JPanel(); outarea = new JTextArea(8, 40); outarea.setEditable(false); JScrollPane jsp = new JScrollPane(outarea,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,Scro llPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); panel6.add(jsp); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { startdir = dirfield.getText(); patt = pattfield.getText(); if (startdir == null || startdir.trim().equals("") || patt == null || patt.trim().equals("")) { JOptionPane.showMessageDialog( frame, "Entrada invalida", "Error", JOptionPane.ERROR_MESSAGE); } else if (search_flag) { JOptionPane.showMessageDialog( frame, "Busqueda en progreso", "Error", JOptionPane.ERROR_MESSAGE); } else { search_flag = true; new Search().start(); } } }); paneltop.add(panel1);

paneltop.add(panel2); paneltop.add(panel3); paneltop.add(panel4); paneltop.add(panel5); panelbot.add(panel6); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(2, 1)); panel.add(paneltop); panel.add(panelbot); frame.getContentPane().add(panel); frame.pack(); frame.setLocation(200, 200); frame.setVisible(true); } public static void main(String args[]) { new ProgressDemo(); } }
Publicado por Ping en 03:27 1 comentarios Etiquetas: ejemplos, JProgressBar

GridLayout
El GridLayout es una forma de situar los componentes con gran flexibilidad en el panel. con setLayout(new GridLayout(Fila,Columna)); puedes establecer un layout con el nmero de Filas y Columnas y los componentes se aaden dentro de las celdas definidas. En el siguiente ejemplo se colocan los componentes en una rejilla que ocupa todo el frame y coloca cuatro botones en su respectiva celda.
import javax.swing.*; import java.awt.*; class Ejemplo extends JFrame { JButton uno = new JButton("uno"); JButton dos = new JButton("dos"); JButton tres = new JButton("tres"); JButton cuatro = new JButton("cuatro"); Menu(){ this.setLayout(new GridLayout(2,2)); add(uno); add(dos); add(tres); add(cuatro); setTitle("Ejemplos de GridLayout"); setSize(400,400); setVisible(true); } public static void main (String []args){ new Ejemplo();

} }
Publicado por Ping en 08:37 0 comentarios Etiquetas: ejemplos, GridLayout, panel

FlowLayout
El FlowLayout es el mtodo ms simple de colocar los componentes dentro de un Panel o un Jpanel en java. Cada uno de los componentes de un panel que se encuentran en FlowLayout se encuentran situados de izquierda a derecha como en una lista, unos a continuacin de los otros, saltando hacia abajo cuando no hay espacio suficiente para ese componente. FlowLayout pertenece a java.awt, pero tambien se puede aplicar a swing, por ejemplo como en este caso a un JPanel. Un ejemplo de la utilizacin del FlowLayout en un programa para colocar tres botones en un panel.
import javax.swing.*; import java.awt.*; class Ejemplo extends JFrame { JButton primero = new JButton("Primero"); JButton anterior = new JButton("Anterior"); JButton siguiente = new JButton("Siguiente"); JButton ultimo = new JButton("Ultimo"); Ejemplo(){ //Aadimos el formato de FlowLayout al JFrame this.setLayout(new FlowLayout()); //Aadimos componentes add(primero); add(anterior); add(siguiente); add(ultimo); setTitle("Ejemplos FlowLayout"); setSize(400,400); setVisible(true); } public static void main (String []args){ new Ejemplo(); } }
Publicado por Ping en 15:53 0 comentarios Etiquetas: ejemplos, flowlayout, panel

lunes 12 de marzo de 2007

Aadir scroll a JTextArea

Con este cdigo podras insertar unas barras de scroll en un JTextArea tal y como cualquier editor de texto. Sea Texto un JTextArea y zonaText un JPanel el que va insertado la caja de texto el ejemplo de como insertar scroll en una caja de texto queda de la siguiente forma. Cdigo: //Aadir barras de scroll a la caja de texto principal JScrollPane textScroll=new JScrollPane(Texto,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); zonaText.add(textScroll);
Publicado por Ping en 15:27 0 comentarios Etiquetas: ejemplos, jtextarea

JToolBar en java
Ejmplo del uso de una JToolBar. Coloca una barra de herramientas en tu programas en java. Lo ms normal es insertar una ImageIcon (icono) que represente la accin que realiza el botn. Por ejemplo para insertar una imagen en el botn de guardar utilizaremos: ImageIcon ImagenGuardar=new ImageIcon("guardar.gif"); BGuardar.setIcon(ImagenGuardar);
import javax.swing.*; class Menu extends JFrame { //Toolbar JToolBar TBarra=new JToolBar(); JButton BNuevo=new JButton("N"); JButton BAbrir=new JButton("A"); JButton BCopiar=new JButton("C"); JButton BCortar=new JButton("C"); JButton BPegar=new JButton("P"); JButton BGuardar=new JButton("G"); public Menu() { //ToolBar TBarra.add(BNuevo); TBarra.add(BAbrir); TBarra.add(BGuardar); TBarra.addSeparator(); TBarra.add(BCopiar); TBarra.add(BCortar); TBarra.add(BPegar); BGuardar.setToolTipText ("Guardar"); BNuevo.setToolTipText ("Nuevo"); BAbrir.setToolTipText ("Abrir"); BCopiar.setToolTipText ("Copiar"); BCortar.setToolTipText ("BCortar"); BPegar.setToolTipText ("Pegar");

add(TBarra,"North"); TBarra.setFloatable(false); setTitle("Ejemplos JPopUpMenu"); setSize(800,600); setVisible(true); } public static void main (String []args){ new Menu(); } }

You might also like