28/11/07

Text de solo números

Debería ser con change. De hecho falla si le pegamos letras pero es lo que hay.
Se permiten números y carateres de control (si no se permiten los caracteres de control el borrar falla)


private void textAno_KeyPress(object sender, KeyPressEventArgs e) {
e.Handled = !(Char.IsNumber(e.KeyChar) || Char.IsControl(e.KeyChar));
}


21/11/07

Campo calculado en un DataTable de un DataSet .net

Program.dm.ds.Proc.Columns.Add("TipoProcNomb", typeof(string), "Parent(FK_TipoProc_Proc).nomb");

(habría que explicarlo más)

17/10/07

Databinding ComboBox C#


ComboBox.DataSource = Program.dm.TipoProcBindingSource; //BindingSource a mostrar
ComboBox.DisplayMember = "nomb"; // Campo nombre
ComboBox.ValueMember = "id"; // Campo valor
ComboBox.DataBindings.Add( // enlace con el campo donde se guarda el valor
new Binding("SelectedValue", // La propiedad de SelectedValue ( no value)
Program.dm.procBindingSource, // Bindingsource de la tabla en la que grabamos el valor
"idTipoProc" // nombre del campo en el que guardamos el valor
));

4/10/07

Comprobar permisos al ejecutar aplicación .net

Sacado de campusMVP

private static bool CheckFullTrust()
{
try
{
// Demandar Full Trust
new PermissionSet(PermissionState.Unrestricted).Demand();
return true;
}
catch (SecurityException)
{
try
{
// No estamos en Full Trust, se lo contamos al usuario
MessageBox.Show("La aplicación necesita Full Trust");
}
catch (SecurityException)
{
// La aplicación no tiene permisos mostrar mensajes... :(
//Logeamos lo ocurrido
}
}
return false;
}

27/7/07

Generar avisos de compilación en C#

Sirve para poner Wanings al darle a compilar por ejemplo para indicar cosas que quedan por hacer o pruebas en código.


private void grabacionCrear() {
#warning grabacionCrear sin hacer
}

19/7/07

Hacer un DataGridView de solo lectura.


ReadOnly = true;
AllowUserToAddRows = false;
AllowUserToDeleteRows = false;
SelectionMode = DataGridViewSelectionMode.FullRowSelect;

5/7/07

Textbox con solo números

(Copiado de www.buayacorp.com)
public Form1()
{
InitializeComponent();

textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);
}
void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// Permitir sólo las teclas de control o números
if (!(char.IsControl(e.KeyChar) || char.IsDigit(e.KeyChar)))
{
e.Handled = true;
}
}

7/6/07

Acceder a un fichero en el servidor desde página ASP

DataSet dataset = new DataSet();
dataset.ReadXml ( Server.MapPath("fichero.xml") );

Esto accedería a "fichero.xml" en donde se encuentre instalada la aplicacion.

12/4/07

String.format en Java


Para fechas:
String.format("%1$te/%1$tm/%1$tY",[variable calendar]);
Para números enteros:
String.format("%1$d",[variable entera]);
Para double / float:
String.format("%1$.2f",[variable double o float]); // saca el nº con 2 decimales

21/3/07

HTML: Label más text en HTML

Para que quede bien el típico texto con un input box en html, es decir, el label sobre el input y alineado a la izquierda con el mismo.
(ver el código de la página)

Buscar

7/3/07

Java. Detectar una cambio en la selección de un JTable

Sirve por ejemplo para mostrar un dato a mayores sobre el registro que se muestra en la tabla en otra parte del formulario.
Hay que cambiar el "modelo de seleccionador" en principio el ponemos que solamente se pueda seleccionar una sola fila y luego definimos una clase para que se llame al evento y se la añadimos al "modelo de seleccionador" en el evento "Selection". (Pa flipá vamos. Lo que se echa de menos un "OnSelect" de toda la vida)

this.jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);/* lo de que solamente se pueda seleccionar una fila.*/

lsm = this.jTable1.getSelectionModel();
lsm.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e){
MetodoALlamarCuandoCambiaLaSeleccion();
}
};

Para saber la fila seleccionada se usa el método del JTable.getSelectedRow().

java String.format

"%" + posicion del parámetro + "$" + tipo de dato

para formatear cadenas: "s"
String.format(" la cadena %1$s", "es muy bonita") --> la cadena es muy bonita

para formatear enteros: "d"

String.format(" cantidad: %1$d", 4) --> cantidad: 4

1/3/07

Elementos en los jList ( los que muestran una lista cadenas para seleccionar (ListBox))

Un dolor cambiar los datos una vez cargados. Como siempre hay una clase vista (el jList) y una clase modelo (AbstractListModel, DefaultListModel). El netbeans les crea por defecto una clase anónima heredada de AbstractListModel en la que (manda webs el tema) NO SE PUEDE AÑADIR ELEMENTOS así que de necesitarlo (que será lo normal) habrá que asociar ( con setModel(modelo) ) al jList una instancia de la clase DefaultListModel a la que sí que se puede hacer de todo con los elementos y la vista se actualiza automáticamente con los cambios por lo visto (esto último no lo has probado).

Doble click en swing

Resulta que no hay evento doble click (pa flipá vamos) se usa el MouseClicked y se comprueba la cantidad de veces que se ha pulsado. Funciona bien el tema (y no se puede controlar un tercer click solo lo hace con 2 clicks)


private void lTablaMouseClicked(java.awt.event.MouseEvent evt) {
if (evt.getClickCount() >= 2){// si es doble click
JOptionPane.showMessageDialog(this,"Doble click"); }
}
}

Creación de un table model específico para un JTable

El enlace del título tiene un tutorial sobre el tema que no está mal. Pero en realidad lo que supongo que se hará es heredar de la clase AbstractTableModel e implementar los métodos abstractos.

http://www.chuidiang.com/java/tablas/tablamodelo/tablamodelo.php

20/2/07

Mini tutorial de action en Java

Un estilo al TAction de Delphi 4 pero años despues y teniendo que escribir código. En fin es lo que hay.

http://java.sun.com/docs/books/tutorial/uiswing/misc/action.html

29/1/07

Creación de pdfs desde java

Utilizar iText. Hay un libro y todo "iText in action". Permite además con los mismos comandos crear Htmls y rtfs.

11/1/07

Serialización de objectos en java


package pruebasserializacion;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Calendar;

/**
*
* @author ivancruz
*/
class Elemento implements Serializable{
int cod;
String nomb;
Calendar fNac;
public Elemento(int cod, String nomb, Calendar fNac){
this.cod = cod;
this.nomb = nomb;
this.fNac = fNac;
}
public String toString(){
return Integer.toString(cod) + "//" + nomb + DateFormat.getDateInstance().format(fNac.getTime());
}
}

public class Main {
final static String NOMBFICH = "d:\\borrame.serializacion";
public static void main(String[] args) throws IOException, ClassNotFoundException {
Main m = new Main();
ArrayList escribir = new ArrayList();
escribir.add(new Elemento(1,"Uno",Calendar.getInstance()));
escribir.add(new Elemento(2,"Dos",Calendar.getInstance()));

FileOutputStream fos;
fos = new FileOutputStream(Main.NOMBFICH);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(escribir);

//ArrayList leer;
FileInputStream fis = new FileInputStream(Main.NOMBFICH);
ObjectInputStream ois = new ObjectInputStream(fis);
ArrayList leer = (ArrayList)ois.readObject();
for(Elemento e:leer){
System.out.println(e);
}
}
}