Como detectar tecla Escape en JDialog y JForm
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
Como generar un evento ActionPerformed presionando la tecla Enter
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
Conectar Java y Ms Access sin configurar un DSN por Windows
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);
}
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.
Suscribirse a:
Entradas
(
Atom
)
5 comentarios :
Publicar un comentario