Foros del Web » Programación para mayores de 30 ;) » Java »

¿Como acceder a componentes de un jFrame desde un jDialog?

Estas en el tema de ¿Como acceder a componentes de un jFrame desde un jDialog? en el foro de Java en Foros del Web. Hola, necesito saber como se puede acceder a los componentes de un jFrame desde un jDialog, tengo dos archivos, un jFrame.java y un jDialog.java en ...
  #1 (permalink)  
Antiguo 04/10/2011, 17:26
Avatar de saman0suke  
Fecha de Ingreso: abril-2009
Mensajes: 180
Antigüedad: 15 años, 7 meses
Puntos: 3
Pregunta ¿Como acceder a componentes de un jFrame desde un jDialog?

Hola, necesito saber como se puede acceder a los componentes de un jFrame desde un jDialog, tengo dos archivos, un jFrame.java y un jDialog.java en el mismo paquete, el jFrame levanta el jDialog, para ingresar datos a una base de datos, y necesito refrescar un jTable que se encuentra en el jFrame para mostrar el nuevo dato ingresado, normalmente lo que haria seria instanciar el jFrame dentro del jDialog para acceder a todos los componentes y metodos, de esta manera:

Código:
jFrame1.java

    public JTextField test_btn;

    public JTextField getTest_btn() {
        return test_btn;
    }

    public void setTest_btn(JTextField test_btn) {
        this.test_btn = test_btn;
    }
Código:
jDialog.java

    jFrame1 frame1 = new jFrame1();

    public jFrame1 getFrame1() {
        return frame1;
    }

    public void setFrame1(jFrame1 frame1) {
        this.frame1 = frame1;
    }
Sin embargo, no me permite acceder al componente(en este caso el jTextField segun el ejemplo) alguna solucion? muchas gracias de antemano, saludos!!
  #2 (permalink)  
Antiguo 06/10/2011, 06:25
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 16 años
Puntos: 13
Respuesta: ¿Como acceder a componentes de un jFrame desde un jDialog?

Hola, creo que donde te estás equivocando es que instancias nuevamente el JFrame dentro del JDialog, si lo instancias nuevamente, el JFrame resultante será otro distinto.
Lo que debes hacer es obtener una referencia al jframe que llama al jdialog...
En el constructor del jdialog hay un parámetro llamado parent para que le puedas pasar la instancia del Jframe que llama al jdialog.
Saludos
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy
  #3 (permalink)  
Antiguo 06/10/2011, 07:24
 
Fecha de Ingreso: octubre-2011
Ubicación: Peru
Mensajes: 18
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: ¿Como acceder a componentes de un jFrame desde un jDialog?

Tengo el mismo problema en este caso quiero que al cerrar el dialog se actualice el jtable ubicado en el jframe padre, mucho apreciare si se pudiera poner un ejemplo sencillo pero descriptivo
  #4 (permalink)  
Antiguo 06/10/2011, 07:49
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 16 años
Puntos: 13
Respuesta: ¿Como acceder a componentes de un jFrame desde un jDialog?

A ver si nos entendemos. Creo que lo que quiere hacer juliocock es lo correcto, mientras que lo que quiere hacer saman0suke no está del todo bien, llamar a elementos del componente padre limita a que el padre sea siempre el mismo, o que proporcione al menos el componente al que queremos acceder...
La forma más correcta es atacharse a eventos del componente hijo, ya que el padre sabe perfectamente a quién llama.
Espero que me hayan entendido, ahora vamos a lo que nos preocupa en este momento
Vamos a hacer que el JFrame padre cree un JDialog y realice una acción cuando este se cierre.

Supongamos que tenemos un JFrame llamado MiJFrame y un JDialog llamado MiJDialog

en el JFrame tenemos un JButton llamado miJButton y un método que se llama actualizarDatos(), este método es el que se va a encargar de tener el código para actualizar los datos


en el JFrame ponemos el siguiente código

Código C++:
Ver original
  1. public MiJFrame() {
  2.         initComponents();
  3.         miJButton.addActionListener(new ActionListener() {
  4.  
  5.             @Override
  6.             public void actionPerformed(ActionEvent e) {
  7.                 //instancio el dialogo
  8.                 JDialog dialog= new MiJDialog(MiJFrame.this, true);
  9.                 //"escucho" el evento close del dialogo
  10.                 dialog.addWindowListener(new WindowAdapter() {
  11.                     @Override
  12.                     public void windowClosed(WindowEvent e) {
  13.                         actualizarDatos();
  14.                     }
  15.                 });
  16.                  //hago visible el dialogo
  17.                 dialog.setVisible(true);
  18.             }
  19.         });
  20.     }
  21.    
  22.     private void actualizarDatos(){
  23.        //codigo para actualizar los datos del JTable
  24.     }

Espero sirva
Saludos
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy

Última edición por pablor21; 06/10/2011 a las 07:51 Razón: Problemas tenemos todos
  #5 (permalink)  
Antiguo 06/10/2011, 08:01
 
Fecha de Ingreso: octubre-2011
Ubicación: Peru
Mensajes: 18
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: ¿Como acceder a componentes de un jFrame desde un jDialog?

Acabo de Probar su codigo, la verdad muy poco creia en que los foros daban ayuda me inscribí hoy día y hoy día mismo me respondieron y oh sorpresa LA REPUESTA ESTA PROBADA Y CERTIFICADA QUE FUNCIONA perfectamente.

mil gracias estuve 3 dias en esto , de verdad muchas gracias por su valiosa ayuda
  #6 (permalink)  
Antiguo 06/10/2011, 08:09
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 16 años
Puntos: 13
Respuesta: ¿Como acceder a componentes de un jFrame desde un jDialog?

De nada! me alegro que te haya sido útil.
Saludos
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy
  #7 (permalink)  
Antiguo 15/10/2012, 20:59
Avatar de gacsnic75  
Fecha de Ingreso: septiembre-2012
Mensajes: 25
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: ¿Como acceder a componentes de un jFrame desde un jDialog?

are un poco mas complejo el problema, tengo la aplicacion de la seiguiente manera

este es la clase principal llama al Jframe que es la la ventana principal
Código:
package mytools;

import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;

import baseobj.menuapp;


/**
 * @author GACS
 * @version 1.0
 */


public class mytools extends javax.swing.JFrame{
	public mytools(){
		setTitle("MyTools");
	    setSize(700, 450);
	    setLocationRelativeTo(null);
	    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    setVisible(true);
	    escritorio = new JDesktopPane();
        add(escritorio);    
		setIconImage (new ImageIcon("/home/gacs/gacssoftware/java/MyTools/src/imagenes/tools1.png").getImage()); 
	    menu = new menuapp();
	    add(menu);
	    this.setJMenuBar(menu);
	}
	public static void main(String[] args) {
		mytools frmapp = new mytools();
		
	
		
	}
	private JDesktopPane escritorio;
	private menuapp menu; 
}
clase menuapp es el menu principal de la aplicacion de aqui llama al jdialog (my acerca de)
Código:
package baseobj;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.event.*;
import mytools.frmacercade;
import mytools.mytools;

import javax.swing.JFrame;

/**
 * @author GACS
 */

public class menuapp extends JMenuBar implements ActionListener{

	public menuapp(){
        mnufile = new JMenu("Archivo");
        mnutools = new JMenu("Herramienta");
        mnuhelp = new JMenu("Ayuda");
        mnuexit = new JMenuItem("Salir");
        mnuabout = new JMenuItem("Acerca de");
        add(mnufile);
        add(mnutools);
        add(mnuhelp);
        mnufile.add(mnuexit);
        mnuhelp.add(mnuabout);
        mnuexit.addActionListener(this);
        mnuabout.addActionListener(this);
	}
		private JMenu mnufile;
		private JMenu mnutools;
		private JMenu mnuhelp;
		private JMenuItem mnuexit;
		private JMenuItem mnuabout;
	
		public void actionPerformed(ActionEvent e) {
			if(e.getSource()== mnuexit)
				{
					System.exit(0);
				}
			if(e.getSource()== mnuabout)
				{
					frmacercade about = new frmacercade(new javax.swing.JFrame());
					about.setVisible(true);
				}
		}
		
		
}
este es mi jdialog(my acerca de)
Código:
package mytools;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import baseobj.basedialogo;
import baseobj.basejlbl;
import javax.swing.ImageIcon;

public class frmacercade extends basedialogo implements ActionListener {

	public frmacercade(java.awt.Frame parent){ 
		super(parent,true); 	
		setTitle("Acerca de");
		setSize(480,180);
		
		 // construir objetos
		 cmdaceptar = new baseobj.basecmd();
		 lblsoftware = new basejlbl();
         lblgacssoftware = new basejlbl();
         lbldescrip = new basejlbl();
         lblcopri = new basejlbl();
         lblcopri2 = new basejlbl();
        
        // propiedades de los objetos
         
         String path = "/home/gacs/gacssoftware/java/MyTools/src/imagenes/tools1.png";  
         ImageIcon imagen = new ImageIcon(path); 
         lblimagen = new basejlbl();
         lblimagen.setIcon(imagen);  
         
         lblimagen.setBounds(5, 10, 120, 140);
                          
         lblgacssoftware.setBounds(10, 5, 120, 15);
         lblgacssoftware.setForeground(new java.awt.Color(51, 51, 255));
         lblgacssoftware.setText("GacsSoftware");
         lblgacssoftware.setFont(new java.awt.Font("Dialog", 1, 14));
         
         lblsoftware.setBounds(115, 25, 70, 15);
         lblsoftware.setText("MyTools");
         lblsoftware.setFont(new java.awt.Font("Dialog", 1, 14));

         lbldescrip.setBounds(120, 45, 400, 40);
         lbldescrip.setText("<html> Este programa es una herramienta de calculos para  <BR> "
                            + "Ingenieros. Se Prohibe el uso de este programa sin <BR>"
                            + "  autorizacion y la modificacion parcial o total del mismo </html>");
                   
         lblcopri.setBounds(120, 90, 800, 15);
         lblcopri.setText("Vercion 1.01");
         
         lblcopri2.setBounds(120, 104, 800, 15);
         lblcopri2.setText("Copyright 2012");
         
         cmdaceptar.setLocation(10, 10);
         cmdaceptar.setText("Aceptar");
         cmdaceptar.addActionListener(this);
         //agregar los objetos al jdialogo
         
         add(lblgacssoftware);
         add(lblsoftware);
         add(lbldescrip);
         add(lblcopri);
         add(lblcopri2);
         add(lblimagen);
         add(cmdaceptar);
	}
	private baseobj.basecmd cmdaceptar;
	private baseobj.basejlbl lblsoftware;
    private baseobj.basejlbl lbldescrip;
    private baseobj.basejlbl lblcopri;
    private baseobj.basejlbl lblcopri2;
    private baseobj.basejlbl lblgacssoftware;
    private baseobj.basejlbl lblimagen;
 
    public void actionPerformed(ActionEvent e) {
		if(e.getSource()== cmdaceptar)
			{
				this.dispose();
			}
		}
}
el problema que veo es que no toma como padre mi jframe y ademas cuando quiero dar aceptar borra todo la documentacion de los jlabel. agradezco de antemano la ayuda. actualmente estoy utilizando eclipse que veo que es mas para programar en codigo que visual y quiero aprender mas codigo.
he podido llegar hasta aqui por ejemplos de la red pero me resultan confuso las sintaxis ya que no veo que sigan el mismo patron. ejemplo

Código:
      String path = "/home/gacs/gacssoftware/java/MyTools/src/imagenes/tools1.png";  
         ImageIcon imagen = new ImageIcon(path); 
         lblimagen = new basejlbl();
         lblimagen.setIcon(imagen);
Código:
		setIconImage (new ImageIcon("/home/gacs/gacssoftware/java/MyTools/src/imagenes/tools1.png").getImage());
  #8 (permalink)  
Antiguo 16/10/2012, 15:33
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 16 años
Puntos: 13
Respuesta: ¿Como acceder a componentes de un jFrame desde un jDialog?

El poblema está aquí

frmacercade about = new frmacercade(new javax.swing.JFrame());

Debes pasarle el Jframe padre, tal como lo tienes le pasas otra instancia...
o sea otro JFrame que no es el que estás viendo...
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy

Etiquetas: componentes, jframe
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:32.