Como adicionar um JInternalFrame em um JDesktopPane?

8 respostas
B

Já tentei isso, mas nada de novo acontece:

@Action public void goCadastrarFuncoes() { mainDesktopPane.removeAll(); mainDesktopPane.add(new CadastrarFuncoes()); mainDesktopPane.repaint(); mainDesktopPane.updateUI(); }
Alguém pode ajudar?

8 Respostas

Y

Da uma olhada se isso não ajuda:

http://www.guj.com.br/posts/list/89651.java#479735

[]´s

M

public Documento(Main classeMain) { this.classeMain = classeMain; this.classeMain.desktop.add(this); }

Onde:

Documento extends JInternalFrame;

Main é a classe que contém o JDesktopPane desktop, de acesso public;

Espero ter ajudado =]

J

Acho que eu tinha feito assim::

jInternal.setVisible(true);
jInternal.setSelected(true);
jdesktopPane.add(jInternal);
jdesktopPane.repaint();

existe tbm o

jdesktopPane.moveToFront(jInternal);

testa ae…

jopss :stuck_out_tongue:

M

Eu acho q não entendi…

Bom, a resposta que dei acima é referente ao caso de seu JInternalFrame estar alocado em outra classe. Porém se estiver na mesma classe é só fazer

Sobre o moveToFront, isso seria usado no caso de você querer dar ênfase a janela em questão (como no MSNMessenger, quando alguém chama atenção), e moveToFront não é aplicavel a JInternalFrame, só a JFrame.

Outra coisa importante é que sim, é necessario dar setVisible no JInternalFrame =p

Mas não precisa dar repaint.

J

pois é Mitsukai… faz um tempo que fiz isso ae… e lembro que foi um problema funfar como eu queria… (tbm era mais iniciante)…
notei que era necessário o “jInternal.setSelected(true)” tbm, senao ele fica atras das telas que tem em frente… como quando se abre duas internal no mesmo jdesktop… o problema era esse e funfou como passei … o repaint nao lembro-me se precisa mesmo…
jopss :stuck_out_tongue:

M

Pois é…

Recentemente tive esse problema, de querer por um internalFrame na frente das outras qdo acontecesse uma ação X, porém de tanto procurar acabei desistindo, e fiz uma “gambiarra” pra setar a internalFrame pra frente das demais: dei setVisible(false) e em seguida setVisible(true) na internalFrame… Bom, acho que não é uma boa pratica, mas funcionou do jeito que eu queria rs…

Mas na verdade esse setSelected eu nunca usei… Vou testar depois pra ver se faz a mesma coisa =D Porém, você não precisa usar isso qdo adciona a internalFrame no desktop, por que qdo é adcionada, ela já é settada afrente das demais.

B

Ola amigos java.

As dicas do forum realmente ajudaram com meu problema (inclusive alguns problemas futuros).
Tudo q faltava era setar visivel no jInternalFrame msm.

Obrigado.

N

estou no netbeans nao consigo abrir o internalframe. faço da seguinte maneira

inicio da classe

package teste2;

import javax.swing.JDesktopPane;


public class JFrame extends javax.swing.JFrame
{
    final JDesktopPane desktop = new JDesktopPane();
    
 
   public JFrame() {
      initComponents();

evento para abrir o internalframe

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
       NewJInternalFrame i = new NewJInternalFrame();
       i.setVisible(true);
        desktop.add(i);
        i.setVisible(true);
       getContentPane().add(desktop);

por ultimo o String args

public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                JFrame jf = new JFrame();
                jf.setVisible(true);
Criado 5 de maio de 2008
Ultima resposta 3 de mai. de 2009
Respostas 8
Participantes 5