Ajuda: Abrir somente uma unica vez o JInternalFrame + Reabrir JInternalFrame

2 respostas
digoveneno

Boa noite, sou iniciante em Java e estou desenvolvendo um programa onde contem um JDesktopPanel que ali posso trabalhar com JInternalFrame, certo… O meu problema eh o seguinte quando realizo a abertura de um JInternalFrame eu nao consigo abrir o mesmo JInternalFrame, porem se eu fechar o mesmo e tentar abrir novamente isso nao funciona. Já fiz diversas tentativas e nao houveram sucesso.

Se puderem dar uma mão ficaria muito grato. Obrigado

2 Respostas

Andr_Heidi_Moriya

olá

viu por acaso vc esta usando o metodo dispose() para fechar a internalframe?

vc esta programando na mão ou vc ta usando o arrasta-solta?

falo

S

Olá amigo

coloque isso no frame principal:

static FrameSequencia frameSequencia;

 public FramePrincipal() {

        addMenuListener(new MenuListener() {
             public void menuSelected (MenuEvent e) {
                buildChildMenus();
            }

            public void menuDeselected(MenuEvent arg0) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            public void menuCanceled(MenuEvent arg0) {
                throw new UnsupportedOperationException("Not supported yet.");
            }
        });

    }

    private void addMenuListener(MenuListener menuListener) {
         buildChildMenus();
    }


   class ChildMenuItem extends JCheckBoxMenuItem {
        private JInternalFrame frame;

        public ChildMenuItem(JInternalFrame frame) {
            super(frame.getTitle());
            this.frame=frame;
        }

        public JInternalFrame getFrame() {
            return frame;
        }
    }

    private void buildChildMenus() {
        int i;
        ChildMenuItem menu;
        JInternalFrame[] array = desktop.getAllFrames();

        for (i = 0; i < array.length; i++) {
            menu = new ChildMenuItem(array[i]);
            menu.setState(i == 0);
            menu.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent ae) {
                    JInternalFrame frame = ((ChildMenuItem)ae.getSource()).getFrame();
                    frame.moveToFront();
                    try {
                        frame.setSelected(true);
                        frame.repaint();
                    } catch (PropertyVetoException e) {
                        e.printStackTrace();
                    }
                }
            });
            menu.setIcon(array[i].getFrameIcon());
            menujanela.add(menu);
            //add(menu);
        }
    }


    protected void createFrameSequencia() throws PropertyVetoException, Exception {

        if (frameSequencia == null) {
            frameSequencia = new FrameSequencia();
            frameSequencia.setVisible(true);
            desktop.add(frameSequencia);
            frameSequencia.pack();
            desktop.getDesktopManager().maximizeFrame(frameSequencia);
        }
        else {
           frameSequencia.setVisible(true); //necessary as of 1.3
        }
        try {
            frameSequencia.setSelected(true);
        } catch (java.beans.PropertyVetoException e) {}
    }

no internalframe:

public void FecharForm() throws Exception {
     if (bd.ConexaoBancoDados.conexao() != null) {
         bd.ConexaoBancoDados.conexao().close();
     }
     this.dispose();
     FramePrincipal.frameSequencia = null;
}

espero que lhe ajude:

Silvio Guedes

Criado 8 de agosto de 2010
Ultima resposta 9 de ago. de 2010
Respostas 2
Participantes 3