cerrar jinternalframe desde jframe

Iniciado por soy_nicanor, 8 Febrero 2016, 15:04 PM

0 Miembros y 1 Visitante están viendo este tema.

soy_nicanor

cerrar jinternalframe desde jframe o cerrar jinternalframe desde el mismo jinternalframe

Al dar enter se cierre

if(evt.getKeyCode() == KeyEvent.VK_ENTER){
jinternalframe.dispose();
}

0xFer

Hola, buscando un poco por internet encontré esto:

Código (java) [Seleccionar]

try {
      jInternalFrame.setClosed(true);
    } catch (PropertyVetoException ex) {
        System.err.println("Closing Exception");
    }


fuente.
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

soy_nicanor

Gracias 0xFer, pero yo quería exactamente esto, no puedo controlar ni desde jframe Padre


0xFer

Prueba con este código:

Código (java) [Seleccionar]

import javax.swing.JInternalFrame;
import javax.swing.JDesktopPane;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JFrame;
import java.awt.event.*;
import java.awt.*;
import java.beans.PropertyVetoException;

public class UCIChess extends JFrame {

JDesktopPane jdpDesktop;
static int openFrameCount = 0;
MyInternalFrame myInternalFrame;
       
        public UCIChess() {
super("JInternalFrame Usage Demo");
// Make the main window positioned as 50 pixels from each edge of the
// screen.
int inset = 50;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(inset, inset, screenSize.width - inset * 2,
screenSize.height - inset * 2);
// Add a Window Exit Listener
addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

                addKeyListener( new KeyAdapter(){
                    public void keyPressed(KeyEvent e){
                        if( e.getKeyCode() == KeyEvent.VK_ENTER ){
                            try {
                                myInternalFrame.setClosed(true);
                                myInternalFrame.dispose();
                            } catch (PropertyVetoException ex) {
                                System.err.println("Closing Exception");
                            }
                        }
                    }
                });
// Create and Set up the GUI.
jdpDesktop = new JDesktopPane();
// A specialized layered pane to be used with JInternalFrames
createFrame(); // Create first window
setContentPane(jdpDesktop);
setJMenuBar(createMenuBar());
// Make dragging faster by setting drag mode to Outline
jdpDesktop.putClientProperty("JDesktopPane.dragMode", "outline");
}
protected JMenuBar createMenuBar() {
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("Frame");
menu.setMnemonic(KeyEvent.VK_N);
JMenuItem menuItem = new JMenuItem("New IFrame");
menuItem.setMnemonic(KeyEvent.VK_N);
menuItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
createFrame();
}
});
               
menu.add(menuItem);
menuBar.add(menu);
return menuBar;
}
protected void createFrame() {
myInternalFrame = new MyInternalFrame();
myInternalFrame.setVisible(true);
// Every JInternalFrame must be added to content pane using JDesktopPane
jdpDesktop.add(myInternalFrame);
try {
myInternalFrame.setSelected(true);
} catch (java.beans.PropertyVetoException e) {
}
}
public static void main(String[] args) {
UCIChess frame = new UCIChess();
frame.setVisible(true);
}
class MyInternalFrame extends JInternalFrame {

static final int xPosition = 30, yPosition = 30;
public MyInternalFrame() {
super("IFrame #" + (++openFrameCount), true, // resizable
true, // closable
true, // maximizable
true);// iconifiable
setSize(300, 300);
// Set the window's location.
setLocation(xPosition * openFrameCount, yPosition
* openFrameCount);
}
}
}


lo bajé de aqui y lo modifiqué tantito.
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

Bultoesal

Me funciono esto, el JInternalFrame cuando se abre lo hace dentro de un JdesktopPanel que está en el JFrame y desde un botón o un JMenuBar podés copiar este código:

try{
            JInternalFrame i = panel.getSelectedFrame();
            if(i==null){
               
            }else{
                i.dispose();
            }
        }catch(Exception e){
           
        }