• Jueves 14 de Noviembre de 2024, 04:39

Autor Tema:  Jframe  (Leído 5272 veces)

Dudin

  • Miembro activo
  • **
  • Mensajes: 55
    • Ver Perfil
Jframe
« en: Jueves 2 de Junio de 2005, 18:19 »
0
hola, tengo un problema y es el siguiente, tengo un jframe con una barra de menus cuyas opciones se ejecutan pulsando Ctrl+ una letra y me abren un jinternalframe. El problema que tengo es que cuando abro un jinternalframe y opero con el, al cerrarlo uso el metodo dispose, pero si quiero seguir accediendo a la barra de menus, no me ejecuta nada porque creo que el jinternalframe sigue cargado aunque no este oculto, alguien me podria decir porque puede estar sucediendo esto, gracias.

maldicion

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Jframe
« Respuesta #1 en: Viernes 3 de Junio de 2005, 01:42 »
0
Mira yo no tengo ese problema pero estoy trabajando lo mismo quetu, asi que espero que te sirva esto que encontré, para que cierres tu jrame interna, aunque yo si puedo abrir varias ventanas sin cerrar las demas y no causa problemas, seria ver como estas declarando las Jinternalframe.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class Modal  {

  static class ModalAdapter
extends InternalFrameAdapter {
    Component glass;

    public ModalAdapter(Component glass) {
this.glass = glass;

// Associate dummy mouse listeners
// Otherwise mouse events pass through
MouseInputAdapter adapter =
  new MouseInputAdapter(){};
glass.addMouseListener(adapter);
glass.addMouseMotionListener(adapter);
    }

    public void internalFrameClosed(
  InternalFrameEvent e) {
glass.setVisible(false);
    }
  }

  public static void main(String args[]) {
    final JFrame frame = new JFrame(
"Modal Internal Frame");
    frame.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);

    final JDesktopPane desktop = new JDesktopPane();

    ActionListener showModal =
  new ActionListener() {
public void actionPerformed(ActionEvent e) {

  // Manually construct a message frame popup
  JOptionPane optionPane = new JOptionPane();
  optionPane.setMessage("Hello, World");
  optionPane.setMessageType(
    JOptionPane.INFORMATION_MESSAGE);
  JInternalFrame modal = optionPane.
    createInternalFrame(desktop, "Modal");

  // create opaque glass pane
  JPanel glass = new JPanel();
  glass.setOpaque(false);

  // Attach modal behavior to frame
  modal.addInternalFrameListener(
    new ModalAdapter(glass));

  // Add modal internal frame to glass pane
  glass.add(modal);

  // Change glass pane to our panel
  frame.setGlassPane(glass);

  // Show glass pane, then modal dialog
  glass.setVisible(true);
  modal.setVisible(true);

  System.out.println("Returns immediately");
}
    };

    JInternalFrame internal =
new JInternalFrame("Opener");
    desktop.add(internal);

    JButton button = new JButton("Open");
    button.addActionListener(showModal);

    Container iContent = internal.getContentPane();
    iContent.add(button, BorderLayout.CENTER);
    internal.setBounds(25, 25, 200, 100);
    internal.setVisible(true);

    Container content = frame.getContentPane();
    content.add(desktop, BorderLayout.CENTER);
    frame.setSize(500, 300);
    frame.setVisible(true);
  }
}

espero te sirva, si no dime como esta declarada la jinternalframe

Dudin

  • Miembro activo
  • **
  • Mensajes: 55
    • Ver Perfil
Re: Jframe
« Respuesta #2 en: Viernes 3 de Junio de 2005, 11:58 »
0
hola, gracias por la respuesta,te voy a adjuntar los dos ficheros para que veas como funciona, primero ejecutas el archivo mimenu2 y al pulsar alt+f te aparecera el internalframe, si te pones a escribir sobre el internalframe y lo cierras con la x de la ventana, podras comprobar que al volver a pulsar alt+f no aparecera.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

maldicion

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Jframe
« Respuesta #3 en: Viernes 3 de Junio de 2005, 17:19 »
0
oye, trate de ejcutar tu programa pero me marca error al tratar de cargar el paquete de facturacion2, creo que falta un paquete o algo asi que se llama com.Borland.jdbc1.layout.*;

si lo tienes envíamelo, mientras tratare de checar que es lo que esta causando ese error.

maldicion

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Jframe
« Respuesta #4 en: Viernes 3 de Junio de 2005, 17:39 »
0
bueno, al checarlo de entrada, no se si esto cambi en algo la ejecución del programa, pero declaras tu clase de la siguiente forma:

public class MiMenu2{

y bueno, he visto varias aplicaciones que cuando usan una frame interna, lo hacen así

public class pap extends JFrame {

lo demas parece que esta bien, solo que cuando yo invoco a la clase interna, una vez declarado el JMenuItem, lo que hago es esto:

JMenuItem altapago = new JMenuItem( "Altas" );
  pagos.add( altapago );
  bar.add( pagos );
  altapago.addActionListener(new ActionListener(){
  public void actionPerformed( ActionEvent event ) {
   JInternalFrame frame = new JInternalFrame(
   "Nuevo Pago", true, true, true, true );
   Container container = frame.getContentPane();
   AltaPagos panel = new AltaPagos();
   container.add( panel, BorderLayout.CENTER );
   frame.pack();
   theDesktop.add( frame,BorderLayout.CENTER );
   frame.setVisible( true );
  }});

para que esta llame a la clase y a la ventana interna. esta ventan interna la llamo de la siguiente manera:

class AltaPagos extends JPanel {
 ...

  public AltaPagos{

  ...datos qu edeso mostrar...
  }
public Dimension getPreferredSize(){
  return new Dimension( 500,350 );  
 }

 }
 y esto lo hago para todas la frame internas que desee. te envio un ejemplo del autor deitel, es muy facil y lo puedes adaptar.

espero te sirva, solo donde marca un arreglo que tiene el nombre de unas imagenes que deben de aparecer internamente, cambiale el nombre y ponle las imagenes que tu desees, y asi podras ver como funciona
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.