Chamar outra classe em um JInternalFrame

9 respostas
R

Fiz uma classe Menu onde existe uma opção produtos, quero fazer uma classe TelaProdutos chamando de Menu e posicionando um JInternalFrame da tela de produtos, como fazer isso?Obrigado.

 tenho o código:

JMenuItem item2 = new JMenuItem(Produtos);

menu.add(item2);

// Chama Tela/Classe Cadastro de Produtos

item2.addActionListener(

new ActionListener()

{

public void actionPerformed( ActionEvent event )

{

//Chama class TelaProdutos com JInternalFrame

o que devo colocar aqui?

}

}

);

//

9 Respostas

Edinei_Manica

Vamos ver se entendi !
Vc quer adicionar um internalFrame de produtos no momento que for realizado o evento no menuItem ?
Se for isso :

A tela de produtos deve estar extendendo de um JInternalFrame !

JInternalFrame produtos  = new TelaProdutos();

produtos.setBounds(posicaoX, posicaoY, width,height);

produtos.setVisible(true);

JdesktopPane.add(produtos);
R

OK é isso mesmo só que na linha abaixo, onde mudei “d” para “D”
JDesktopPane.add(produtos);

o compilador acusa que:
The method add(Component) from the type Container is not static

segue todo meu código, acho que estou esquecendo de criar algum objeto:

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;
import javax.swing.JDesktopPane;

import javax.swing.JFrame;

import javax.swing.JInternalFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JPopupMenu;

import javax.swing.JSeparator;

public class Menu
{

public static void main(String args[])
{
    JFrame frame = new JFrame("Saw Client");
    
	final JPopupMenu popupMenu = new JPopupMenu();

	// Create a submenu with items
	JMenu submenu = new JMenu();
	// Add submenu to popup menu
	popupMenu.add(submenu);

    frame.getContentPane().add(popupMenu);
    
	JMenuBar menuBar = new JMenuBar();
	JMenu menu = new JMenu("Cadastros");
	menuBar.add(menu);
	JMenuItem item = new JMenuItem("Clientes");
	menu.add(item);
	JMenuItem item2 = new JMenuItem("Produtos");
	menu.add(item2);
	// Chama Tela/Classe Cadastro de Produtos
	item2.addActionListener( 
	   new ActionListener() 
	   { 
		  public void actionPerformed( ActionEvent event ) 
		  { 
			//Chama class TelaProdutos com JInternalFrame
			JInternalFrame produtos = new TelaProdutos(); 
			produtos.setBounds( 100, 100, 320,240); 
			produtos.setVisible(true); 
			JDesktopPane.add(produtos);		
		  } 
	   } 
	); 
	//
	menu.add(new JSeparator());
	JMenuItem item99 = new JMenuItem("Sair");
	menu.add(item99);
	//Sair do Sistema
	item99.addActionListener( 
	   new ActionListener() 
	   { 
		  public void actionPerformed( ActionEvent event ) 
		  { 
			 System.exit( 0 ); 
		  } 
	   } 
	); 
	//
	JMenu menu2 = new JMenu("Pedidos");
	menuBar.add(menu2);
	JMenuItem item21 = new JMenuItem("Orçamento");
	menu2.add(item21);
	JMenuItem item22 = new JMenuItem("Venda");
	menu2.add(item22);
	JMenu menu3 = new JMenu("Relatórios");
	JMenuItem item31 = new JMenuItem("Pedidos");
	menu3.add(item31);
	JMenuItem item32 = new JMenuItem("Tabela de Preço");
	menu3.add(item32);
	menuBar.add(menu3);

	submenu = new JMenu("Vendas");
	JMenuItem subitem31 = new JMenuItem("Duplicatas");
	submenu.add(subitem31);
	menu3.add(submenu);
	
	frame.setJMenuBar(menuBar);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	int width = 640;
	int height = 480;
	frame.setSize(width, height);
	frame.setResizable(false);
	frame.setVisible(true);
}

}

Edinei_Manica

Primeira coisa, não crie tudo o teu código dentro do metodo main, senão está ficando tudo estático, e apos crie um JDesktopPane e adicione em seu frame e dai depois vc adiciona neste JDesktopPane o JInternalFrame !

Edinei_Manica
Tenta isto:
package mypackage6;

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JDesktopPane; 
import javax.swing.JFrame; 
import javax.swing.JInternalFrame; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 
import javax.swing.JPopupMenu; 
import javax.swing.JSeparator; 

public class Menu extends JFrame
{ 
public static JDesktopPane desktop = new JDesktopPane();

public Menu()
{
getContentPane().add(desktop);
final JPopupMenu popupMenu = new JPopupMenu(); 

// Create a submenu with items 
JMenu submenu = new JMenu(); 
// Add submenu to popup menu 
popupMenu.add(submenu); 

getContentPane().add(popupMenu); 

JMenuBar menuBar = new JMenuBar(); 
JMenu menu = new JMenu("Cadastros"); 
menuBar.add(menu); 
JMenuItem item = new JMenuItem("Clientes"); 
menu.add(item); 
JMenuItem item2 = new JMenuItem("Produtos"); 
menu.add(item2); 
// Chama Tela/Classe Cadastro de Produtos 
item2.addActionListener( 
new ActionListener() 
{ 
public void actionPerformed( ActionEvent event ) 
{ 
//Chama class TelaProdutos com JInternalFrame 
JInternalFrame produtos = new TelaProdutos(); 
produtos.setBounds( 100, 100, 320,240); 
produtos.setVisible(true); 
desktop.add(produtos); 
} 
} 
); 
// 
menu.add(new JSeparator()); 
JMenuItem item99 = new JMenuItem("Sair"); 
menu.add(item99); 
//Sair do Sistema 
item99.addActionListener( 
new ActionListener() 
{ 
public void actionPerformed( ActionEvent event ) 
{ 
System.exit( 0 ); 
} 
} 
); 
// 
JMenu menu2 = new JMenu("Pedidos"); 
menuBar.add(menu2); 
JMenuItem item21 = new JMenuItem("Orçamento"); 
menu2.add(item21); 
JMenuItem item22 = new JMenuItem("Venda"); 
menu2.add(item22); 
JMenu menu3 = new JMenu("Relatórios"); 
JMenuItem item31 = new JMenuItem("Pedidos"); 
menu3.add(item31); 
JMenuItem item32 = new JMenuItem("Tabela de Preço"); 
menu3.add(item32); 
menuBar.add(menu3); 

submenu = new JMenu("Vendas"); 
JMenuItem subitem31 = new JMenuItem("Duplicatas"); 
submenu.add(subitem31); 
menu3.add(submenu); 

this.setJMenuBar(menuBar); 
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
int width = 640; 
int height = 480; 
this.setSize(width, height); 
this.setResizable(false); 
this.setVisible(true); 
}


public static void main(String args[]) 
{ 
  Menu menu = new Menu();
} 
}
R

Primeiro Obrigado pela dica e está quase certo, o meu código TelaProdutos é: , mas quando clico em Produtos não aparece nada, fiz um teste com System.out e chamou, o que está errado no código abaixo?

import javax.swing.JFrame;

import javax.swing.JInternalFrame;

import javax.swing.JLabel;
public class TelaProdutos extends JInternalFrame {

public TelaProdutos(){

JInternalFrame iframe = new JInternalFrame(Hello);

JLabel label = new JLabel(Hello, Swing World);

iframe.getContentPane().add(label);

iframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

iframe.pack();

iframe.setVisible(true);

}

}
Edinei_Manica

Na classe Menu retire esta linha :

getContentPane().add(popupMenu);

R

Value , pelo que entendi estavamos jogando o menu por cima do desktop, senão por favor explique, Obrigado.
Mas a minha tela com o label(TelaProdutos) ainda não aparece, porque?
como fechar o JInternalFrame?

import javax.swing.JFrame;

import javax.swing.JInternalFrame;

import javax.swing.JLabel;
public class TelaProdutos extends JInternalFrame {

public TelaProdutos(){

JInternalFrame iframe = new JInternalFrame(Hello);

JLabel label = new JLabel(Hello, Swing World);

iframe.add(label);

iframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

ou onde tem um tutorial bem explicativo e com exemplos com isso que estou querendo fazer?

Edinei_Manica

“Rogerio”:
Value , pelo que entendi estavamos jogando o menu por cima do desktop, senão por favor explique, Obrigado.
Mas a minha tela com o label(TelaProdutos) ainda não aparece, porque?
como fechar o JInternalFrame?

import javax.swing.JFrame;

import javax.swing.JInternalFrame;

import javax.swing.JLabel;
public class TelaProdutos extends JInternalFrame {

public TelaProdutos(){

JInternalFrame iframe = new JInternalFrame(Hello);

JLabel label = new JLabel(Hello, Swing World);

iframe.add(label);

iframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

ou onde tem um tutorial bem explicativo e com exemplos com isso que estou querendo fazer?

Aqui apareceu a tela de produtos !

Edinei_Manica
Coloca isto na tela de produtos:
import javax.swing.JFrame; 
import javax.swing.JInternalFrame; 
import javax.swing.JLabel; 

public class TelaProdutos extends JInternalFrame { 
public TelaProdutos(){ 
JLabel label = new JLabel("Hello, Swing World"); 
this.getContentPane().add(label); 
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
this.pack(); 
this.setVisible(true); 
} 
}
Criado 27 de julho de 2004
Ultima resposta 27 de jul. de 2004
Respostas 9
Participantes 2