Foco do JInternalFrame

5 respostas
L

Fala galera, blz?

Como sempre, duvidas… Estou desenvolvendo um aplicação que tem varias janela (JInternalFrame). Se eu abro a janela cliente e depois abro a janela fornecedor (sem fechar a outra) a ultima janela sempre fica por baixo e por mais que ela esteja com o foco, ela continua por baixo da outra… será que consegui deixar claro o problema? Alguem tem alguma ideia do que pode ser?

Obrigado.

5 Respostas

L

Alguem?

S

Olá amigo

acho que isso pode ajudar:

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);
        }
    }

Silvio Guedes

ViniGodoy

Sempre leia o javadoc antes de perguntar. Lá você veria que existem os métodos moveToFront() e moveToBack().

L

Galera, vlw os toques.
Vini, eu vi o javadoc, mas nao entendi como funciona os metodos. Para mim, o mais logico era o selected. Quando eu usei o moveToFront ele nao fez nada, talvez eu implementei errado, coloquei ele junto com a chamada da classe. Mais uma outra coisa, os componentes estão se misturando de uma tela com a outra, eu ja vi alguma coisa assim postada aqui, mas ninguem soube responder o que era…

L

Bom galera, estava lendo as documentações e vi que a melhor coisa que tem para eu evitar este tipo de problema é usar JDesktopPane. Só pelo fato de eu o usar, ja nao tive mais o problema… Alguem ve problemas em se usar JDesktopPane?

Abraços.

Criado 17 de junho de 2010
Ultima resposta 18 de jun. de 2010
Respostas 5
Participantes 3