Problemas con los JDialog
Te agradesco de antemano la ayuda que me puedas brindar y disculpa que sea tan largo el mensaje
Estoy haciendo un pequeño sistema en java pero tengo el siguiente inconveniente con los JDialog.
Tengo creado un JDialog para el login lo quiero colocar como modal dentro del formulario principal pero por algun motivo el JDialog no esta dentro de JFrame principal si no como independiente ya que es molestoso cuando cambio de aplicacion ya que se pierde el enfoque y la visualizacion del mismo tengo que estar acudiendo al teclado para localizarlo.
Este es el codigo del menu principal
package seguridad.usuario;
import javax.swing.*;
import seguridad.usuario.*;
import seguridad.usuario.menu.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import seguridad.negocio.Cls_Usuario;
public class Mdi_Principal extends JFrame
{
int[] modulos ;
Cls_Usuario usuario = new Cls_Usuario();
public static JDesktopPane Escritorio= new JDesktopPane();
JMenuBar bar = new JMenuBar();
JMenu archivo = new JMenu("Archivo");
JMenu proceso= new JMenu("Procesos");
JMenu mantenimiento= new JMenu("Mantenimiento");
JMenu consulta= new JMenu("Consultas");
JMenu ayuda= new JMenu("Ayuda");
JComboBox cmb_modulo = new JComboBox();
JComboBox cmb_empresa = new JComboBox();
mnu_seguridad seguridad = new mnu_seguridad();
mnu_inventario inventario = new mnu_inventario();
public void menu(){
bar.setLayout(new GridLayout(0,7));
bar.setBorder(BorderFactory.createEtchedBorder(Color.WHITE,Color.BLACK));
bar.add(archivo);
bar.add(mantenimiento);
bar.add(proceso);
bar.add(consulta);
bar.add(ayuda);
this.mnu_Archivo(archivo);
this.archivo.setMnemonic('A');
this.archivo.setIcon(new ImageIcon("image/pen_icon.gif"));
this.proceso.setMnemonic('P');
this.proceso.setIcon(new ImageIcon("image/paste.gif"));
this.mantenimiento.setMnemonic('M');
this.mantenimiento.setIcon(new ImageIcon( "image/posticon.gif"));
this.consulta.setMnemonic('C');
this.consulta.setIcon(new ImageIcon("image/address_book.gif"));
this.ayuda.setMnemonic('Y');
this.ayuda.setIcon(new ImageIcon("image/HelpCenter.gif"));
this.setJMenuBar(bar);
}
public void combo(){
bar.add(cmb_empresa);
bar.add(cmb_modulo);
cmb_modulo.addActionListener(new EventoModulo());
}
public Mdi_Principal(){
this.setTitle("MDI Principal");
this.setIconImage(new ImageIcon("image/hips.sm.gif").getImage());
menu();
combo();
addWindowListener(new WindowAdapter(){
public void windowClosed(WindowEvent e){
System.exit(0);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
});
setBounds(0,0,500,500);
this.getContentPane().add(Escritorio);
show();
}
void mnu_Archivo(JMenu menu){
String []opciones={"Iniciar Seccion","Salir"};
for (int i = 0; i<opciones.length; i++){
menu.add(opciones);
menu.getItem(i).addActionListener(new EventoArchivo());
}
}
public class EventoModulo implements ActionListener{
public void actionPerformed(ActionEvent e) {
JComboBox c=(JComboBox) e.getSource();
try
{
String modulo = c.getSelectedItem().toString();
if (modulo.equals("Seguridad")){
seguridad.referenias(Escritorio,bar);
}
else
if (modulo.equals("Inventario"))
inventario.referenias(Escritorio,bar);
/* else
facturacion.referenias(Escritorio,bar);*/
if(modulo != null)
{
seguridad.menu_user(bar,modulos[cmb_modulo.getSelectedIndex()],usuario.getId_persona());
}
}
catch (Exception ex) {
}
}
}
public void login()
{
Frm_Login login = new Frm_Login(this,true);
login.referencia_usuario(usuario);
login.show();
modulos = usuario.comsulta_modulos(this.cmb_modulo);
this.cmb_modulo.setSelectedIndex(0);
}
public class EventoArchivo implements ActionListener {
public void actionPerformed(ActionEvent e) {
JMenuItem c = (JMenuItem) e.getSource();
int num = (c.getAccessibleContext().getAccessibleIndexInParent());
switch (num) {
case 0:
{
login();
}
break;
case 1:
{
//MantenimientoUsuario ggg = new MantenimientoUsuario();
/*PerfilesUsuario ggg = new PerfilesUsuario();
Escritorio.add(ggg);
System.out.println ("Salir");*/
}
break;
default : System.out.println ("Por Defecto");
}
}
}
public static void main (String arg[])
{
new Mdi_Principal();
}
}
Este es el codigo del Login
package seguridad.usuario;
import javax.swing.JToggleButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JDialog;
import java.awt.Dialog;
import javax.swing.JFrame;
import javax.swing.JComboBox;
import seguridad.negocio.Cls_Usuario;
public class Frm_Login extends Dialog {
Cls_Usuario usuario;
JLabel lbl_clave;
JToggleButton jbt_aceptar;
JTextField txt_clave;
JLabel lbl_usuario;
JTextField txt_usuario;
JToggleButton jbt_cancelar;
public Frm_Login(JFrame parent, boolean modal) {
super(parent, modal);
initComponents();
}
private void initComponents() {
lbl_usuario = new javax.swing.JLabel();
txt_usuario = new javax.swing.JTextField();
lbl_clave = new javax.swing.JLabel();
txt_clave = new javax.swing.JTextField();
jbt_aceptar = new javax.swing.JToggleButton();
jbt_cancelar = new javax.swing.JToggleButton();
setLayout(null);
setTitle("Ingrese su Usuario");
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
closeDialog(evt);
}
});
this.jbt_aceptar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
if(usuario.validar(txt_usuario.getText(),txt_clave.getText()))
{
setVisible(false);
dispose();
}
}
});
lbl_usuario.setText("Usuario");
add(lbl_usuario);
lbl_usuario.setBounds(30, 30, 50, 16);
add(txt_usuario);
txt_usuario.setBounds(100, 30, 110, 20);
//txt_usuario.setText("Usuario");
lbl_clave.setText("Clave");
add(lbl_clave);
lbl_clave.setBounds(30, 60, 41, 16);
add(txt_clave);
txt_clave.setBounds(103, 60, 110, 20);
//txt_clave.setText("Clave");
jbt_aceptar.setText("Aceptar");
add(jbt_aceptar);
jbt_aceptar.setBounds(20, 100, 90, 26);
jbt_cancelar.setText("Cancelar");
add(jbt_cancelar);
...
Estoy haciendo un pequeño sistema en java pero tengo el siguiente inconveniente con los JDialog.
Tengo creado un JDialog para el login lo quiero colocar como modal dentro del formulario principal pero por algun motivo el JDialog no esta dentro de JFrame principal si no como independiente ya que es molestoso cuando cambio de aplicacion ya que se pierde el enfoque y la visualizacion del mismo tengo que estar acudiendo al teclado para localizarlo.
Este es el codigo del menu principal
package seguridad.usuario;
import javax.swing.*;
import seguridad.usuario.*;
import seguridad.usuario.menu.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import seguridad.negocio.Cls_Usuario;
public class Mdi_Principal extends JFrame
{
int[] modulos ;
Cls_Usuario usuario = new Cls_Usuario();
public static JDesktopPane Escritorio= new JDesktopPane();
JMenuBar bar = new JMenuBar();
JMenu archivo = new JMenu("Archivo");
JMenu proceso= new JMenu("Procesos");
JMenu mantenimiento= new JMenu("Mantenimiento");
JMenu consulta= new JMenu("Consultas");
JMenu ayuda= new JMenu("Ayuda");
JComboBox cmb_modulo = new JComboBox();
JComboBox cmb_empresa = new JComboBox();
mnu_seguridad seguridad = new mnu_seguridad();
mnu_inventario inventario = new mnu_inventario();
public void menu(){
bar.setLayout(new GridLayout(0,7));
bar.setBorder(BorderFactory.createEtchedBorder(Color.WHITE,Color.BLACK));
bar.add(archivo);
bar.add(mantenimiento);
bar.add(proceso);
bar.add(consulta);
bar.add(ayuda);
this.mnu_Archivo(archivo);
this.archivo.setMnemonic('A');
this.archivo.setIcon(new ImageIcon("image/pen_icon.gif"));
this.proceso.setMnemonic('P');
this.proceso.setIcon(new ImageIcon("image/paste.gif"));
this.mantenimiento.setMnemonic('M');
this.mantenimiento.setIcon(new ImageIcon( "image/posticon.gif"));
this.consulta.setMnemonic('C');
this.consulta.setIcon(new ImageIcon("image/address_book.gif"));
this.ayuda.setMnemonic('Y');
this.ayuda.setIcon(new ImageIcon("image/HelpCenter.gif"));
this.setJMenuBar(bar);
}
public void combo(){
bar.add(cmb_empresa);
bar.add(cmb_modulo);
cmb_modulo.addActionListener(new EventoModulo());
}
public Mdi_Principal(){
this.setTitle("MDI Principal");
this.setIconImage(new ImageIcon("image/hips.sm.gif").getImage());
menu();
combo();
addWindowListener(new WindowAdapter(){
public void windowClosed(WindowEvent e){
System.exit(0);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
});
setBounds(0,0,500,500);
this.getContentPane().add(Escritorio);
show();
}
void mnu_Archivo(JMenu menu){
String []opciones={"Iniciar Seccion","Salir"};
for (int i = 0; i<opciones.length; i++){
menu.add(opciones);
menu.getItem(i).addActionListener(new EventoArchivo());
}
}
public class EventoModulo implements ActionListener{
public void actionPerformed(ActionEvent e) {
JComboBox c=(JComboBox) e.getSource();
try
{
String modulo = c.getSelectedItem().toString();
if (modulo.equals("Seguridad")){
seguridad.referenias(Escritorio,bar);
}
else
if (modulo.equals("Inventario"))
inventario.referenias(Escritorio,bar);
/* else
facturacion.referenias(Escritorio,bar);*/
if(modulo != null)
{
seguridad.menu_user(bar,modulos[cmb_modulo.getSelectedIndex()],usuario.getId_persona());
}
}
catch (Exception ex) {
}
}
}
public void login()
{
Frm_Login login = new Frm_Login(this,true);
login.referencia_usuario(usuario);
login.show();
modulos = usuario.comsulta_modulos(this.cmb_modulo);
this.cmb_modulo.setSelectedIndex(0);
}
public class EventoArchivo implements ActionListener {
public void actionPerformed(ActionEvent e) {
JMenuItem c = (JMenuItem) e.getSource();
int num = (c.getAccessibleContext().getAccessibleIndexInParent());
switch (num) {
case 0:
{
login();
}
break;
case 1:
{
//MantenimientoUsuario ggg = new MantenimientoUsuario();
/*PerfilesUsuario ggg = new PerfilesUsuario();
Escritorio.add(ggg);
System.out.println ("Salir");*/
}
break;
default : System.out.println ("Por Defecto");
}
}
}
public static void main (String arg[])
{
new Mdi_Principal();
}
}
Este es el codigo del Login
package seguridad.usuario;
import javax.swing.JToggleButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JDialog;
import java.awt.Dialog;
import javax.swing.JFrame;
import javax.swing.JComboBox;
import seguridad.negocio.Cls_Usuario;
public class Frm_Login extends Dialog {
Cls_Usuario usuario;
JLabel lbl_clave;
JToggleButton jbt_aceptar;
JTextField txt_clave;
JLabel lbl_usuario;
JTextField txt_usuario;
JToggleButton jbt_cancelar;
public Frm_Login(JFrame parent, boolean modal) {
super(parent, modal);
initComponents();
}
private void initComponents() {
lbl_usuario = new javax.swing.JLabel();
txt_usuario = new javax.swing.JTextField();
lbl_clave = new javax.swing.JLabel();
txt_clave = new javax.swing.JTextField();
jbt_aceptar = new javax.swing.JToggleButton();
jbt_cancelar = new javax.swing.JToggleButton();
setLayout(null);
setTitle("Ingrese su Usuario");
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
closeDialog(evt);
}
});
this.jbt_aceptar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
if(usuario.validar(txt_usuario.getText(),txt_clave.getText()))
{
setVisible(false);
dispose();
}
}
});
lbl_usuario.setText("Usuario");
add(lbl_usuario);
lbl_usuario.setBounds(30, 30, 50, 16);
add(txt_usuario);
txt_usuario.setBounds(100, 30, 110, 20);
//txt_usuario.setText("Usuario");
lbl_clave.setText("Clave");
add(lbl_clave);
lbl_clave.setBounds(30, 60, 41, 16);
add(txt_clave);
txt_clave.setBounds(103, 60, 110, 20);
//txt_clave.setText("Clave");
jbt_aceptar.setText("Aceptar");
add(jbt_aceptar);
jbt_aceptar.setBounds(20, 100, 90, 26);
jbt_cancelar.setText("Cancelar");
add(jbt_cancelar);
...
1 Respuesta
Respuesta de javaadicto
1