Maldito JDesktopPane e JInternalFrame

Galera, eu soh kero fazer um menu q tenha algo do tipo Adicionar, e toda a vez q eu aperto, apareca uma JInternalFrame. Pq meu algortimo nao funfa?
import javax.swing.;
import java.awt.event.
;
import java.awt.*;

public class DesktopTest extends JFrame {
public DesktopTest() {
super( “Usando o JDesktop Pane”);

	JMenuBar bar = new JMenuBar();
	JMenu addMenu = new JMenu("Adicionar");
	JMenuItem newFrame = new JMenuItem("Frames Internos");
	addMenu.add(newFrame);
	setJMenuBar( bar);
	JPanel a = new JPanel();
	a.setLayout(new FlowLayout());
	getContentPane().add(a);
	a.add(bar);
	
			
	final JDesktopPane desktop = new JDesktopPane();
	getContentPane().add(desktop);		
	desktop.add(addMenu);	
	
	newFrame.addActionListener (
		new ActionListener() {
			public void actionPerformed (ActionEvent e) {
				JInternalFrame frame = new JInternalFrame(
					"Frame Interno", true, true, true, true);
				Container c =  frame.getContentPane();					
				MyJPanel panel = new MyJPanel();
				
				c.add(panel, BorderLayout.CENTER);
				frame.setSize(200,250);
				desktop.add(frame);
			}
		}
	);
	setSize(500,400);
	show();
}	
	public static void main(String args[]) {
		DesktopTest a = new DesktopTest();
		a.addWindowListener(
			new WindowAdapter() {
				public void windowClosing(WindowEvent e)  {
					System.exit(0);
				}
			}
		);
	}
}


class MyJPanel extends JPanel {
	private ImageIcon imgIcon;
	public MyJPanel() {
		imgIcon = new ImageIcon("sd.gif");
	}
	
	public void paintComponent(Graphics g) {
		imgIcon.paintIcon(this,g,0,0);
	}
}

[1] Qual a diferenca dessa linha para esta: Container c = getContentPane();
c.add(desktop);

Elas se comportam diferente no programa.

Kem puder ajudar, fico grato.

PS - Meu primeiro topico :wink:

Bem vindo ao GUJ!!!

    Cara dá uma olhada nesse tópico aqui que ele tem o vc precisa.
    Qualquer dúvida posta ai!!!

http://www.guj.com.br/forum/viewtopic.php?t=1671&highlight=jinternalframe

[quote=“luiz_ross”]Bem vindo ao GUJ!!!

    Cara dá uma olhada nesse tópico aqui que ele tem o vc precisa.
    Qualquer dúvida posta ai!!!

http://www.guj.com.br/forum/viewtopic.php?t=1671&highlight=jinternalframe[/quote]
vlw mininu :lol:

nossa cara, vc nao gosta de da import nao? hehhehehe
to estudando aki teu codigo, tentando entender.
qualquer coisa, volto aki

Consegui! Mas to tendo uns problemas aki
1 - O JInternalFrame vem maximizado e nao aceita nada mais do q isso… eu coloquei nos atributos da JInternalFrame tudo true
2 - Por que a criacao do seu menu funciona e a minha nao? hehehe
Olha o meu MENU :

JMenuBar bar = new JMenuBar();
JMenu addMenu = new JMenu(“Adicionar”);
JMenuItem newFrame = new JMenuItem(“Frames Internos”);
addMenu.add(newFrame);
setJMenuBar(bar);

Olha o seu MENU:

jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();

jMenu1.setText(“Menu”);

jMenu1.add(jMenuItem1);

jMenuBar1.add(jMenu1);

setJMenuBar(jMenuBar1);

private javax.swing.JInternalFrame jInternalFrame1;
private javax.swing.JDesktopPane jDesktopPane1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenu jMenu1;

Pra mim eh a mesma coisa, mas o seu menu aparece e o meu nao :frowning:

3 - Qual a diferenca de: getContentPane().add(objeto);
Para essa: Container c = getContentPane();
c.add(objeto);

Essas linhas funcionam diferentem.

VLW GENTE!!!

Felipe… vc naum sabe o que é identação naum???

dá uma olhada no seu codigo como ficou…

[code]import javax.swing.;
import java.awt.event.
;
import java.awt.*;

public class DesktopTest extends JFrame {
public DesktopTest() {
super("Usando o JDesktop Pane");
JMenuBar bar = new JMenuBar();
JMenu addMenu = new JMenu("Adicionar");
JMenuItem newFrame = new JMenuItem("Frames Internos");
JPanel a = new JPanel();
addMenu.add(newFrame);
bar.add(addMenu);
a.setLayout(new FlowLayout());
getContentPane().add(a);
addMenu.add(newFrame);
setJMenuBar(bar);

	final JDesktopPane desktop = new JDesktopPane(); 
	this.setContentPane(desktop); 
	 
	
	newFrame.addActionListener (new ActionListener() { 
		public void actionPerformed (ActionEvent e) { 
			JInternalFrame frame = new JInternalFrame("Frame Interno", true, true, true, true); 
			Container c = frame.getContentPane(); 
			MyJPanel panel = new MyJPanel(); 
			c.add(panel, BorderLayout.CENTER); 
			frame.setSize(200,250); 
			frame.setOpaque(true);
			frame.show();
			desktop.add(frame); 
			
		} 
		} 
		); 
	setSize(500,400); 
	show(); 

}

public static void main(String args[]) {
DesktopTest a = new DesktopTest();
a.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);
}
}
[/code]

CAJÚ

acho que o own_prison passou a ideia cara…mas vou reforçar, e caso ele nao tenha passado, vou passar…
Para que vc possa criar JInternalFrame’s dinamicamente vc deve colocar um ouvinte no seu JMenuItem, e, a cada vez que o usuario clicar, instancia-se um novo JInternalFrame…
Algo assim…


jmenuitem.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
        JInternalFrame internal = new JInternalFrame("Internal Adicionado",true,true,true,true);
    //seta o internalframe no desktop
    .......
   }
});

Bom, na verdade, apenas esboçei minha ideia acima…vc pode partir dela para que consiga resolver o problema…ou ate mesmo fazer o que os amigos propuseram anteriormente. :wink:

ate mais…

[quote=“own_prison”]Felipe… vc naum sabe o que é identação naum???

dá uma olhada no seu codigo como ficou…

[code]import javax.swing.;
import java.awt.event.
;
import java.awt.*;

public class DesktopTest extends JFrame {
public DesktopTest() {
super("Usando o JDesktop Pane");
JMenuBar bar = new JMenuBar();
JMenu addMenu = new JMenu("Adicionar");
JMenuItem newFrame = new JMenuItem("Frames Internos");
JPanel a = new JPanel();
addMenu.add(newFrame);
bar.add(addMenu);
a.setLayout(new FlowLayout());
getContentPane().add(a);
addMenu.add(newFrame);
setJMenuBar(bar);

	final JDesktopPane desktop = new JDesktopPane(); 
	this.setContentPane(desktop); 
	 
	
	newFrame.addActionListener (new ActionListener() { 
		public void actionPerformed (ActionEvent e) { 
			JInternalFrame frame = new JInternalFrame("Frame Interno", true, true, true, true); 
			Container c = frame.getContentPane(); 
			MyJPanel panel = new MyJPanel(); 
			c.add(panel, BorderLayout.CENTER); 
			frame.setSize(200,250); 
			frame.setOpaque(true);
			frame.show();
			desktop.add(frame); 
			
		} 
		} 
		); 
	setSize(500,400); 
	show(); 

}

public static void main(String args[]) {
DesktopTest a = new DesktopTest();
a.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);
}
}
[/code]

CAJÚ[/quote]

Cajú amore mio. HAUHUEHUHE
Vlw pelas dicas. Obrigado a todos! :stuck_out_tongue: