Buenas señores del Foro desearia que me dieran una manita con esto necesito abrir una ventana con eventos del teclado por ejemplo.
abro mi JFrame como ventana ´principal y luego preciono "CTL + 1 " me abra una ventana luego presiono "CTL + 2 " me abra otra ventana y asi ...........como podria implementar el metodo .................un ejemplo profabor
Lo unico que se me ocurrio fue lo siguiente.
.
.
.
addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
formKeyPressed(evt);
}
});
.
.
.
private void formKeyPressed(java.awt.event.KeyEvent evt) {
if(evt.isControlDown()){
if(evt.getKeyCode()==49)
System.out.println("ctrl+1");
}
}
Colocas el evento de keypressed al jframe y en tu método primero verificas si la tecla que se oprimio fue ctrl y despues si fue el número 1 (en ascii es el valor 49)
si se cumplen esas dos condiciones entonces realizas la llamada a tu ventana.
El problema es que cuando tengas mas componentes sobre el jframe donde tengas el evento no te va a funcionar.
Tal vez no sea la forma correcta, pero es una posible solucion.
Saludos.
groso men funciona pero hay algo que no manyo bien esa parte del codigo la sacastes con el editor del netbeans, pero que pasa si quiero implementarlo a mano que iria en components para que escuche los eventos del teclado esto :
this.addKeyListener(this);
eso iria o cual ?????
:¬¬
import javax.swing.JFrame;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.Dimension;
import java.awt.event.KeyListener;
import javax.swing.WindowConstants;
public class EventosJFrame extends JFrame implements KeyListener {
public static void main(String args[]) {
new EventosJFrame().setVisible(true);
}
public EventosJFrame() {
iniciarInterfaz();
}
private void iniciarInterfaz() {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setMinimumSize(new Dimension(100, 100));
addKeyListener(this);
getContentPane().setLayout(new FlowLayout());
pack();
}
public void keyPressed(KeyEvent evt){
if(evt.isControlDown()){
if(evt.getKeyCode()==49)
System.out.println("ctrl+1");
}
}
public void keyReleased(KeyEvent evt){
}
public void keyTyped(KeyEvent evt){
}
}
esto iria :D en el constructor
addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
eventos_teclado(evt);
}
});
el resto lo implemenaria dependiendo que evento deseo que ocurra ahora mi duda es la siguiente porque en algunos casos no ocurre el evento solo cuando la ventana esta sin componentes ocurres esos eventos pero cuando esta con componentes como Jtextfield o combobox ya no ocurre nada de los eventos que uno les implemnta a que se deve o hay algun metodo que me falte llamar
encontre esto en google
Usted tendría que agregar la clave de la escucha exactamente el componente que tiene el foco (muchos componentes son en realidad compuestos).
como haria para colocar el componente foco al JFrame para que escuche el evento
Cita de: mapers en 12 Junio 2011, 10:19 AM
cuando esta con componentes como Jtextfield o combobox ya no ocurre nada de los eventos que uno les implemnta a que se deve o hay algun metodo que me falte llamar
Creo que que ya lo habia mencionado antes.
Cita de: 1mpuls0 en 12 Junio 2011, 06:05 AM
El problema es que cuando tengas mas componentes sobre el jframe donde tengas el evento no te va a funcionar.
Utiliza requestFocus
addWindowListener( new WindowAdapter() {
public void windowOpened( WindowEvent e ){
requestFocus();
}
} );
Saludos.
todo me funciona ok gracias por el requestFocus pero desearia que ocurriera todos los eventos cuando presiono Escape mira
private void formKeyPressed(java.awt.event.KeyEvent evt) {
switch(evt.getKeyCode()){
case KeyEvent.VK_ESCAPE :
System.out.println("mapers ");
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
break;
}
// TODO add your handling code here:
}
me imprime en pantalla pero no ejecuta la linea para cerrar la ventana :D a que se deve esto
Intenta con System.exit(0);
private void formKeyPressed(java.awt.event.KeyEvent evt) {
switch(evt.getKeyCode()){
case KeyEvent.VK_ESCAPE :
System.out.println("mapers ");
System.exit(0);
break;
}
// TODO add your handling code here:
}
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
Es una propiedad del jframe que se supone ya debiaste haber definido desde antes.
Saludos.
ese si funciona men pero solo deseo que se me cierre la ventana que tengo presente y no todas las ventanas :D por eso uso
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
pero al parecer no funciona pero si funciona
System.exit(0);
no existira otro metodo parecido al primero en el que solo pueda cerrar la ventan del evento y que no s em cierre toda mi aplicacion ........................
No entendí con eso de "al parecer no funciona pero si funciona" :xD
Intenta con estos métodos.
dispose();
setVisible(false);
Saludos
me refiero a que funciona el
System.exit(0);
pero no el
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
solo deseo cerrar le ventana del evento no todas :S
pero ya me salio con el dispose()
gracias ..............
Cita de: 1mpuls0 en 12 Junio 2011, 19:49 PM
Intenta con estos métodos.
dispose();
setVisible(false);
ahora mi duda es la siguiente :S mira en mi ventana hay botones y hasta un JunternalJFrame y JTextfiel lo que pasa es que despues de usar los ocmponenetes de mi interfaz y quiero cerrar mi ventana simplemente ya no detecta el teclado o esque se cambio de focus si es asi como puedo regresarlo........los botones de control los tiene el JInternalFrame ..............gracias por todo .........
si me funciona tu metodo siempore y cuando no haga nada en la ventana ....................................
o debo colocar el
addWindowListener( new WindowAdapter() {
public void windowOpened( WindowEvent e ){
requestFocus();
}
} );
por cada evento que hago para que refresque mi focus