Primeiro Programa JAVA - Sistema Comercial

Prezados (as),

 Tenho lido, acompanhado exemplos de apostilas, fazendo exercícios, procurando saber a teoria e percebi que já era hora de eu partir para o desenvolvimento de um sistema. Afinal é vivendo e aprendendo, de acordo com o que vai aparecendo vou procurar saber, estudar.
 O sistema que eu tenho em mente é simples. É um sistema local (desktop) e quero que ele registre uma entrada de venda, emita relatórios de venda, que registre também um pedido de compra, emita relatórios dos pedidos compra. Que ele também tenha um cadastro de Produtos e Fornecedores, claro que de acordo com a necessidade será implementado outras classes.
 Com a ajuda desde site (guj.com.br) e outros ai pelo Google consegui dar uma cara para o meu sistema.
 Estou usando o Eclipse para desenvolver. Então segue o código, peço humilde que avaliem esse código e me orientem se estou no caminho certo.
import java.awt.event.ActionEvent;   
import java.awt.event.ActionListener;   
import javax.swing.JFrame;   
import javax.swing.JMenu;   
import javax.swing.JMenuBar;   
import javax.swing.JMenuItem;   
	  
	@SuppressWarnings("serial")
	
	public class Menu extends JFrame {   
  
	    public JFrame frame;   
  
	   public Menu() {   

//Configurações do Frame	   
		   super("Aplicação JAVA");   
	   setSize(700, 700);   
	   setLocation(180,20);
	   setDefaultCloseOperation(EXIT_ON_CLOSE);   
	
	   JMenuBar barra = new JMenuBar();   
	   setJMenuBar(barra);   

//Referênte aos Menus
	   JMenu menuVenda = new JMenu("Venda");   
	   barra.add(menuVenda);
	   
	   JMenu menuCadastro = new JMenu("Cadastro");   
	   barra.add(menuCadastro);
	   
	   JMenu menuCompra = new JMenu("Compra");   
	   barra.add(menuCompra);

//MENU VENDA	   
//Referênte a NOVA ENTRADA do menu VENDA
	   JMenuItem menuItemNovaEntrada = new JMenuItem("Nova Entrada de Venda");   
	   menuVenda.add(menuItemNovaEntrada);
	
	//Chama NOVA ENTRADA DE VENDA
	   menuItemNovaEntrada.addActionListener(new ActionListener() {
   	       public void actionPerformed(ActionEvent e) {   
   	    	frame = new JFrame("Nova Entrada de Venda");//Frame e abaixo suas configurações   
   	   		frame.setSize(400, 400);   
   	   		frame.setLocation(300,100);
   	    	   
   	   			  frame.setVisible(true);
   	       		}   
   	    	});
 
//Referênte ao RELATÓRIO do Menu VENDA   
	   JMenuItem menuItemRelatorio = new JMenuItem("Relatório de Venda");   
	   menuVenda.add(menuItemRelatorio);
	    
	//Chama RELATÓRIO DE VENDA
	    menuItemRelatorio.addActionListener(new ActionListener() {
		   public void actionPerformed(ActionEvent e) {   
    	    frame = new JFrame("Relatório de Venda");//Frame e abaixo suas configurações   
    	    frame.setSize(400, 400);   
    	    frame.setLocation(300,100);
    	   	  
    	   		frame.setVisible(true);	
       		}   
    	});   

//MENU CADASTRO
//Referênte ao Cadastro de Produtos
	 JMenuItem menuItemCadastroDeProdutos = new JMenuItem("Cadastro de Produtos");   
	 menuCadastro.add(menuItemCadastroDeProdutos);
	 	
	 //Chama Cadastro de Produtos
	 	menuItemCadastroDeProdutos.addActionListener(new ActionListener() {
	 	   public void actionPerformed(ActionEvent e) {   
	    	frame = new JFrame("Cadastro de Produtos");//Frame e abaixo suas configurações   
	    	frame.setSize(400, 400);   
	    	frame.setLocation(300,100);
	    	    	   
	    		  frame.setVisible(true); 	
	    	}   
	    });   
	   	   
//Referênte ao Cadastro de Fornecedores 
	 JMenuItem menuItemCadastroDeFornecedores = new JMenuItem("Cadastro de Fornecedores");   
	 menuCadastro.add(menuItemCadastroDeFornecedores);
	 		
	 //Chama Cadastro de Fornecedores
	 	menuItemCadastroDeFornecedores.addActionListener(new ActionListener() {
	 	   public void actionPerformed(ActionEvent e) {   
	 	   	frame = new JFrame("Cadastro de Fornecedores");//Frame e abaixo suas configurações   
	 	   	frame.setSize(400, 400);   
	 	   	frame.setLocation(300,100);
	 	   	    	   
	 	   	   			  frame.setVisible(true);
	 		
	 	     }   
	 	 });   
	   
//MENU COMPRA	   
//Refêrente ao Pedido de Compra do MENU Compra
	 JMenuItem menuItemPedidoDeCompra = new JMenuItem("Pedido de Compra");   
	 menuCompra.add(menuItemPedidoDeCompra);	   
	   
	 //Chama Pedido de Compra
	   menuItemPedidoDeCompra.addActionListener(new ActionListener() {
		   public void actionPerformed(ActionEvent e) {   
		    frame = new JFrame("Pedido de Compra");//Frame e abaixo suas configurações  
		    frame.setSize(400, 400);   
		    frame.setLocation(300,100);
	   	   		
	    	   	 frame.setVisible(true);	 	
     		}   
  		});
//Referênte ao Relatorio de Compra do Menu Compra 	   
	 JMenuItem menuItemRelatorioPedidoDeCompra = new JMenuItem("Relatório Pedido de Compra");   
	 menuCompra.add(menuItemRelatorioPedidoDeCompra);	   
	   
	 //Chama Relatório do Pedido de Compra do Menu Compra
	   menuItemRelatorioPedidoDeCompra.addActionListener(new ActionListener() {
		   public void actionPerformed(ActionEvent e) {   
		    frame = new JFrame("Relatório de Pedido de Compra");//Frame e abaixo suas configurações  
		    frame.setSize(400, 400);   
		    frame.setLocation(300,100);
	   	   		
	    	   	 frame.setVisible(true);	 	
     		}   
  		});
	 }   
  
    public static void main(String[] args) {   
    	Menu teste = new Menu();   
    	teste.
    	setVisible(true);   
    }   
} 

nao tem mta coisa ainda,
mas dah pra começar a deixar um pouco mais ‘dinamico’ o modo de montar as novas telas do seu sistema…

siga o exemplo enxuto:

[code]public class Menu extends JFrame {

public JFrame frame;   

public Menu() {   
	super("Aplicação JAVA");   
	setSize(700, 700);   
	setLocation(180,20);
	setDefaultCloseOperation(EXIT_ON_CLOSE);   

	JMenuBar barra = new JMenuBar();   
	setJMenuBar(barra);   

	JMenu menuVenda = new JMenu("Venda");   
	barra.add(menuVenda);

	JMenu menuCadastro = new JMenu("Cadastro");   
	barra.add(menuCadastro);

	JMenu menuCompra = new JMenu("Compra");   
	barra.add(menuCompra);

	JMenuItem menuItemNovaEntrada = new JMenuItem("Nova Entrada de Venda");   
	menuVenda.add(menuItemNovaEntrada);
	menuItemNovaEntrada.addActionListener(new MyListener(menuItemNovaEntrada.getText()));

	JMenuItem menuItemRelatorio = new JMenuItem("Relatório de Venda");   
	menuVenda.add(menuItemRelatorio);
	menuItemRelatorio.addActionListener(new MyListener(menuItemRelatorio.getText()));

	JMenuItem menuItemCadastroDeProdutos = new JMenuItem("Cadastro de Produtos");   
	menuCadastro.add(menuItemCadastroDeProdutos);
	menuItemCadastroDeProdutos.addActionListener(new MyListener(menuItemCadastroDeProdutos.getText()));

	JMenuItem menuItemCadastroDeFornecedores = new JMenuItem("Cadastro de Fornecedores");   
	menuCadastro.add(menuItemCadastroDeFornecedores);
	menuItemCadastroDeFornecedores.addActionListener(new MyListener(menuItemCadastroDeFornecedores.getText()));

	JMenuItem menuItemPedidoDeCompra = new JMenuItem("Pedido de Compra");   
	menuCompra.add(menuItemPedidoDeCompra);	   
	menuItemPedidoDeCompra.addActionListener(new MyListener(menuItemPedidoDeCompra.getText()));

	JMenuItem menuItemRelatorioPedidoDeCompra = new JMenuItem("Relatório Pedido de Compra");   
	menuCompra.add(menuItemRelatorioPedidoDeCompra);	   
	menuItemRelatorioPedidoDeCompra.addActionListener(new MyListener(menuItemRelatorioPedidoDeCompra.getText()));
}   

public static void main(String[] args) {   
	Menu teste = new Menu();   
	teste.setVisible(true);   
}   

}

class MyListener implements ActionListener{

private String titulo;

public MyListener(String titulo){
	this.titulo = titulo;
}

@Override
public void actionPerformed(ActionEvent e) {
	JFrame frame = new JFrame(titulo);
	frame.setSize(400, 400);   
	frame.setLocation(300,100);

	frame.setVisible(true);	 
}

}[/code]

vc pode criar classes em arquivos separados pra facilitar o entendimento do codigo…
vc pode e deve criar classes extendendo o JFrame para cada tela do sistema, e ai sim instanciar elas, cada uma tendo suas proprias configurações…

Dá uma estudada em Design Patterns. Eles te auxiliam e muito a construir sistemas escalaveis, e ajudam a definir uma aruitetura para o mesmo deixando-o desacoplado, enxuto e de fácil entendimento para uma possivel futura manutenção ou adição de um novo módulo ( funcionalidade ). Definir uma arquitetura para seu pojeto, é uma das fases mais importantes de seu projeto!

Amigo,

Antes de se preocupar com a parte gráfica, siga a dica acima e procure por MVC e come por suas classe de negócio, e vá implementando e testando passo a passo
ou seja faça o cadastro primeiro… não adianta você ter a tela de relatório se não tem produto cadastrado… defina o que vai usar no seu projeto…

por exemplo se vai usar hibernate ou não… se não então comece pela modelagem do seu banco… criação do banco… conexão com o banco… gravação no banco…

e assim vai…

Abraços…

Amigos…

 Desde já agradeço muito a ajuda de vcs. Estudar Java sem uma orientação é phoda.
 
 É exatamente isso que estou querendo fazer, mas estou apanhando, tentei de tudo. Mas vamos por partes, pra começar. 
 Percebi que foi que feito o seguinte... o public void actionPerformed(ActionEvent e) foi implementado só uma vez com suas configurações e adicionado um (new MyListener(menuItemNovaEntrada.getText())). 

Entendi como aconteceu isso. Agora eu mexendo no código, tirando o class MyListener implements ActionListener o eclipse não me sugere que eu crie essa estrutura que foi criada.
Então é estudando Design Patters e MVC (Model-View-Controller) que vou entender melhor essas implementações e como estruturar melhor o meu código!? Certo… Acho que deu pra entender. Essa noite vai longa.

Ow… Muito obrigado. Qualquer coisa eu volto aqui hein!!!

Boa noite…

Sim, Estuda MVC assim você tbm consegue separa suas dúvidas,

Estuda como fazer um cadastro simples em MVC, eu aconselho o uso do NetBeans para parte gráfica…

Grato,

Por favor…

Como devo fazer, para que nesse cógigo que o colega limpou, no MenuItem (Cadastro de Fornecedor, para o caso) chamar a classe.

Tenho uma classe Cadastro de Fornecedores que está complementa, fazenda conexão com o banco e funcionando todos os botões necessários para ela.

Naveguei a noite toda aqui pela net e não consegui. Gostaria que me dessem uma solução para o meu problema.

Desde já agradeço!!!

Por favor…

Como devo fazer, para que nesse cógigo que o limpou, no MenuItem chamar a classe (Cadastro de Fornecedor, para o caso).

Tenho uma classe Cadastro de Fornecedores que está complementa, fazenda conexão com o banco e funcionando todos os botões necessários para ela.

Naveguei a noite toda aqui pela net e não consegui. Gostaria que me orientassem para uma solução para o meu problema.

Desde já agradeço!!!