Foro de elhacker.net

Programación => Java => Mensaje iniciado por: soy_nicanor en 8 Febrero 2016, 15:04 pm



Título: cerrar jinternalframe desde jframe
Publicado por: soy_nicanor en 8 Febrero 2016, 15:04 pm
cerrar jinternalframe desde jframe o cerrar jinternalframe desde el mismo jinternalframe

Al dar enter se cierre

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


Título: Re: cerrar jinternalframe desde jframe
Publicado por: 0xFer en 8 Febrero 2016, 23:06 pm
Hola, buscando un poco por internet encontré esto:

Código
  1. try {
  2.      jInternalFrame.setClosed(true);
  3.    } catch (PropertyVetoException ex) {
  4.        System.err.println("Closing Exception");
  5.    }

fuente. (http://stackoverflow.com/questions/17520473/how-to-close-internal-frames)


Título: Re: cerrar jinternalframe desde jframe
Publicado por: soy_nicanor en 9 Febrero 2016, 16:07 pm
Gracias 0xFer, pero yo quería exactamente esto, no puedo controlar ni desde jframe Padre

(https://scontent-dfw1-1.xx.fbcdn.net/hphotos-xpa1/v/t1.0-9/12669613_760390640771604_5478041095317984727_n.jpg?oh=204b83457dcd1997a333c6d9d5e64a43&oe=57359BA4)


Título: Re: cerrar jinternalframe desde jframe
Publicado por: 0xFer en 10 Febrero 2016, 04:13 am
Prueba con este código:

Código
  1. import javax.swing.JInternalFrame;
  2. import javax.swing.JDesktopPane;
  3. import javax.swing.JMenu;
  4. import javax.swing.JMenuItem;
  5. import javax.swing.JMenuBar;
  6. import javax.swing.JFrame;
  7. import java.awt.event.*;
  8. import java.awt.*;
  9. import java.beans.PropertyVetoException;
  10.  
  11. public class UCIChess extends JFrame {
  12.  
  13. JDesktopPane jdpDesktop;
  14. static int openFrameCount = 0;
  15. MyInternalFrame myInternalFrame;
  16.  
  17.        public UCIChess() {
  18. super("JInternalFrame Usage Demo");
  19. // Make the main window positioned as 50 pixels from each edge of the
  20. // screen.
  21. int inset = 50;
  22. Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
  23. setBounds(inset, inset, screenSize.width - inset * 2,
  24. screenSize.height - inset * 2);
  25. // Add a Window Exit Listener
  26. addWindowListener(new WindowAdapter() {
  27.  
  28. public void windowClosing(WindowEvent e) {
  29. System.exit(0);
  30. }
  31. });
  32.  
  33.                addKeyListener( new KeyAdapter(){
  34.                    public void keyPressed(KeyEvent e){
  35.                        if( e.getKeyCode() == KeyEvent.VK_ENTER ){
  36.                            try {
  37.                                myInternalFrame.setClosed(true);
  38.                                myInternalFrame.dispose();
  39.                            } catch (PropertyVetoException ex) {
  40.                                System.err.println("Closing Exception");
  41.                            }
  42.                        }
  43.                    }
  44.                });
  45. // Create and Set up the GUI.
  46. jdpDesktop = new JDesktopPane();
  47. // A specialized layered pane to be used with JInternalFrames
  48. createFrame(); // Create first window
  49. setContentPane(jdpDesktop);
  50. setJMenuBar(createMenuBar());
  51. // Make dragging faster by setting drag mode to Outline
  52. jdpDesktop.putClientProperty("JDesktopPane.dragMode", "outline");
  53. }
  54. protected JMenuBar createMenuBar() {
  55. JMenuBar menuBar = new JMenuBar();
  56. JMenu menu = new JMenu("Frame");
  57. menu.setMnemonic(KeyEvent.VK_N);
  58. JMenuItem menuItem = new JMenuItem("New IFrame");
  59. menuItem.setMnemonic(KeyEvent.VK_N);
  60. menuItem.addActionListener(new ActionListener() {
  61.  
  62. public void actionPerformed(ActionEvent e) {
  63. createFrame();
  64. }
  65. });
  66.  
  67. menu.add(menuItem);
  68. menuBar.add(menu);
  69. return menuBar;
  70. }
  71. protected void createFrame() {
  72. myInternalFrame = new MyInternalFrame();
  73. myInternalFrame.setVisible(true);
  74. // Every JInternalFrame must be added to content pane using JDesktopPane
  75. jdpDesktop.add(myInternalFrame);
  76. try {
  77. myInternalFrame.setSelected(true);
  78. } catch (java.beans.PropertyVetoException e) {
  79. }
  80. }
  81. public static void main(String[] args) {
  82. UCIChess frame = new UCIChess();
  83. frame.setVisible(true);
  84. }
  85. class MyInternalFrame extends JInternalFrame {
  86.  
  87. static final int xPosition = 30, yPosition = 30;
  88. public MyInternalFrame() {
  89. super("IFrame #" + (++openFrameCount), true, // resizable
  90. true, // closable
  91. true, // maximizable
  92. true);// iconifiable
  93. setSize(300, 300);
  94. // Set the window's location.
  95. setLocation(xPosition * openFrameCount, yPosition
  96. * openFrameCount);
  97. }
  98. }
  99. }

lo bajé de aqui (http://www.wideskills.com/java-tutorial/java-jinternalframe-class-example) y lo modifiqué tantito.


Título: Re: cerrar jinternalframe desde jframe
Publicado por: Bultoesal en 20 Agosto 2021, 06:32 am
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){
           
        }