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);
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();
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]
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.
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!