Angelorum

Por favor, haz un clic sobre los anuncios cuando pases por mi blog, ya? =)

Como detectar tecla Escape en JDialog y JForm

5 comentarios
A diferencia de los cuadros de diálogo de Windows, los JDialog no se cierran si un presiona le tecla Escape ( los InputDialog y ShowConfirmationDialog son la excepción).

Para agregarle este rasgo a nuetros JDialog ( y , si queremos a algunos JFrame), podemos usar este código:


import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.KeyStroke;

/**
*
* @author Jason Matamala
*/
public class AuxDialog extends javax.swing.JDialog
{

/** Creates new form AuxDialog */
public AuxDialog (java.awt.Frame parent, boolean modal)
{
super (parent, modal);
addEscapeKey ();
initComponents ();
}
public AuxDialog (JDialog parent, boolean modal)
{
super (parent, modal);
addEscapeKey ();
initComponents ();
}
private void addEscapeKey ()
{
// Handle escape key to close the dialog

KeyStroke escape = KeyStroke.getKeyStroke (KeyEvent.VK_ESCAPE, 0, false);
Action escapeAction = new AbstractAction ()
{
public void actionPerformed (ActionEvent e)
{
dispose ();
}
};

getRootPane ().getInputMap (JComponent.WHEN_IN_FOCUSED_WINDOW).put (escape, "ESCAPE");
getRootPane ().getActionMap ().put ("ESCAPE", escapeAction);
}

//aqui se haria el empaquetamiento de la interface grafica....
private void initComponents()
{
//....
}
} //fin clase

5 comentarios :

Como generar un evento ActionPerformed presionando la tecla Enter

9 comentarios
Si estamos, por ejemplo, con el foco sobre un botón y presionamos la tecla Enter, el evento ActionPerformed no se activa. Para ellos, debemos hacer click sobre el botón.

Este código permite generar un evento ActionPerformed si presionamos la tecla enter:

Forma de usarlo:
aButton.addActionListener(this); // for normal mouse click
aButton.addKeyListener(new MakeEnterDoAction()); // convert Enter to an ActionEvent

// MakeEnterDoAction.java
// Class to turn Enter key press into an ActionEvent for a component


import java.awt.event.*;
import java.awt.*;

public class MakeEnterDoAction extends KeyAdapter {

public void keyPressed(KeyEvent ke)
{
if (ke.getKeyCode() == KeyEvent.VK_ENTER)
{
Object src = ke.getSource();
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(
new ActionEvent(src,
ActionEvent.ACTION_PERFORMED,
"Enter"));
}
} // end keyPressed()

} // end class

9 comentarios :

Conectar Java y Ms Access sin configurar un DSN por Windows

No hay comentarios
Si usamos este codigo para conectar a una base de datos MS Acces desde java:

try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(Exception e){
e.printStackTrace(System.err);
}
Connection con;
Statement stmt;

//connecting to the database.
try{
con=DriverManager.getConnection("jbdc:odbc:MiDNSDeBaseDeDatos");
stmt=con.createStatement();

con.close();
stmt.close();
}
catch(Exception sqle){
sqle.printStackTrace(System.err);
}


Debemos obligatoriamente registrar un DNS con el nombre MiDNSDeBaseDeDatos. ( Ir a Panel de Control, Herramientas Administrativas, Origenes de Datos OBDC).

El problema es que si alguien lo elimina, nuestra aplicacion no funcionará.

Podemos corregir ese problema haciendo los siguientes cambios:

try

{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String dataSourceName = "MiBaseDeDatos.mdb";
String dbURL = "jdbc:odbc:Driver={Microsoft Access
Driver (*.mdb)};DBQ=";
dbURL += dataSourceName +
";DriverID=22;READONLY=true)";
dbconn = DriverManager.getConnection(dbURL,"","");
Statement s = dbconn.createStatement();
}

catch ( ClassNotFoundException cnfex )

{
cnfex.printStackTrace();
info=info+"Connection unsuccessful\n" + cnfex.toString();
}

Esto busca la bases de datos guardada en
dataSourceName, que puede incluir un path relativo o absoluto. No necesita registrar ningun DNS.





No hay comentarios :