Mudando Conteudo interno de uma aplicação em swing com menu

Boa tarde!
Galera, ve se vcs podem me ajudar.
Estou com uma aplicação que funciona da seguinte forma (layout)


MENU (com opcoes 1,2 e 3)

     CONTEUDO

Entao, quando eu clico na opcao 1 do menu, queria que a parte do conteudo viesse os dados relativo a essa opcao.

Mas o problema e como faço para trocar, no caso, se ele clicar em outra opcao, para atualizar somente o conteudo e deixar o menu la?

queria que fosse tipo um tiles da vida (pensando em framework mvc web). Queria sabe como faço para o menu ficar fixo la em cima e eu so atualizar lá em baixo.

Eis o código q eu estou pelejando…

package br.com.hotel.visao;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.GroupLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.Border;

public class ReservasHotelFrame extends JFrame implements ActionListener {
    private JMenu jMenu;

    private JMenuItem jmiHotel;
    private JMenuItem jmiServicos;
    private JMenuItem jmiApartamentos;
    private JMenuItem jmiReservas;
    private JMenuItem jmiSair;
    private JLabel jlHotelInfo;

    private GroupLayout layout;
    private Border borda;
    private Container container;

    private javax.swing.JMenuBar jMenuBar;

    public ReservasHotelFrame() {
	super("::.Reservas Hotel Tulip.::");
	inicializarComponentesVisao();
	// Container container = this.getContentPane();
	// container.removeAll();
    }

    public void inicializarComponentesVisao() {
	inicializaMenu();
	inicializaLayout();
	inicializaAcoesMenu();

	this.setVisible(true);
    }

    private void inicializaAcoesMenu() {
	// Adicionando a acao para fechar tudo quando o sair for clicado.
	jmiSair.addActionListener(new ActionListener() {
	    public void actionPerformed(ActionEvent arg0) {
		int opcao = JOptionPane.showConfirmDialog(null,
			"Deseja realmente fechar a aplicação?", "Pergunta",
			JOptionPane.YES_OPTION);
		if (opcao == 0) {
		    System.exit(0);
		}
	    }
	});

	// Adiciona a acao quando clical em O Hotel
	jmiHotel.addActionListener(new ActionListener() {
	    public void actionPerformed(ActionEvent arg0) {
		showHotelInfo();
	    }
	});

	// Adiciona a acao quando clica em Servicos do Hotel
	jmiServicos.addActionListener(new ActionListener() {
	    public void actionPerformed(ActionEvent arg0) {
		showServicosHotel();
	    }
	});
    }

    public void showServicosHotel() {
	JLabel jlServicos = new JLabel();
	JLabel jlQuarto = new JLabel();
	JLabel jlLavanderia = new JLabel();
	JLabel jlCafe = new JLabel();
	JLabel jlRestaurante = new JLabel();
	JLabel jlAcademia = new JLabel();
	JLabel jlSalaoJogos = new JLabel();

	jlQuarto.setText("Quartos com suites, escritório e acesso a internet.");
	jlLavanderia.setText("Serviços de lavanderia em geral.");
	jlCafe.setText("Café da manha colonial das 06hrs até as 10hrs.");
	jlRestaurante
		.setText("Restaurante interno até as 00:00 de segunda a segunda");
	jlAcademia.setText("Sala de musculação e Exercicios cardiovasculares");
	jlSalaoJogos.setText("Salão de Jogos com mesas de sinuca e cartas");

	container = this.getContentPane();
	container.setVisible(false);

	Container containerServicos = new Container();
	containerServicos.setLayout(new GridLayout(7, 1));
	containerServicos.add(jlQuarto);
	containerServicos.add(jlLavanderia);
	containerServicos.add(jlCafe);
	containerServicos.add(jlRestaurante);
	containerServicos.add(jlAcademia);
	containerServicos.add(jlSalaoJogos);

	this.setContentPane(containerServicos);
	trocaContainer(container, containerServicos);
	this.setVisible(true);
    }

    public void showHotelInfo() {
	JLabel jlEndereco;
	container = this.getContentPane();

	Container c = new Container();
	c.setLayout(new BorderLayout());

	jlHotelInfo = new JLabel();
	jlHotelInfo.setIcon(new ImageIcon("icones/hotel.jpg"));
	jlHotelInfo.setHorizontalAlignment(SwingConstants.HORIZONTAL);
	jlHotelInfo.setHorizontalTextPosition(SwingConstants.CENTER);
	jlHotelInfo.setVerticalTextPosition(SwingConstants.BOTTOM);

	jlEndereco = new JLabel("90 Everett Av. Chelsea MA - Boston - EUA");
	jlEndereco.setHorizontalAlignment(SwingConstants.HORIZONTAL);
	jlEndereco.setHorizontalTextPosition(SwingConstants.CENTER);
	jlEndereco.setVerticalTextPosition(SwingConstants.BOTTOM);

	Font font = new Font("SansSerif", Font.BOLD, 14);
	Font font2 = new Font("Verdana", Font.BOLD, 14);
	jlEndereco.setFont(font2);

	jlHotelInfo.setText("Hotel Tulip Inn");
	jlHotelInfo.setFont(font);
	jlHotelInfo.setForeground(Color.BLUE);

	c.add(jlHotelInfo, BorderLayout.NORTH);
	c.add(jlEndereco, BorderLayout.SOUTH);
	this.setContentPane(c);
	this.remove(container);
	// this.setContentPane(c);
	trocaContainer(container, c);
    }

    /**
     * Faz a inicialização do Layout
     */
    private void inicializaLayout() {
	// Define o tamanho da tela.
	this.setSize(800, 800);

	// Coloca para a janelia do JFrame ficar centralizada no monitor
	setLocationRelativeTo(null);

	/*
	 * Adiciona tratamento para questionar a saida do programa quando clica
	 * em X
	 */
	this.addWindowListener(new WindowAdapter() {
	    public void windowClosing(WindowEvent w) {
		int opcao = JOptionPane.showConfirmDialog(null,
			"Deseja realmente fechar a aplicação?", "Pergunta",
			JOptionPane.YES_OPTION);
		if (opcao == 0) {
		    System.exit(0);
		}
	    }

	    public void windowOpened(WindowEvent arg0) {
		// System.out.println("windowOpened");
	    }

	    public void windowClosed(WindowEvent arg0) {
		// System.out.println("windowClosed");
	    }

	    public void windowIconified(WindowEvent arg0) {
		// System.out.println("windowIconified");
	    }

	    public void windowDeiconified(WindowEvent arg0) {
		// System.out.println("windowDeiconified");
	    }

	    public void windowActivated(WindowEvent arg0) {
		// System.out.println("windowActivated");
	    }

	    public void windowDeactivated(WindowEvent arg0) {
		// System.out.println("windowDeactivated");
	    }

	});
    }

    /**
     * Inicializa itens do menu.
     */
    private void inicializaMenu() {
	jMenuBar = new JMenuBar();
	jmiHotel = new JMenuItem("Hotel");
	jmiServicos = new JMenuItem("Serviços do Hotel");
	jmiApartamentos = new JMenuItem("Tipos de Apartamentos");
	jmiReservas = new JMenuItem("Reserva de Apartamentos");
	jmiSair = new JMenuItem("Sair");
	jMenu = new javax.swing.JMenu("Menu Principal");

	// Criando uma fonte
	Font arialBold12 = new Font("arial", Font.BOLD, 12);

	jmiHotel.setFont(arialBold12);
	jmiServicos.setFont(arialBold12);
	jmiApartamentos.setFont(arialBold12);
	jmiReservas.setFont(arialBold12);
	jmiSair.setFont(arialBold12);

	// Criando uma cor
	Color colorRed = new Color(255, 51, 0);

	setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

	jMenu.setMnemonic('M');
	jmiHotel.setMnemonic('H');
	jmiServicos.setMnemonic('S');
	jmiReservas.setMnemonic('R');
	jmiApartamentos.setMnemonic('T');

	jMenu.add(jmiHotel);
	jMenu.add(jmiServicos);
	jMenu.add(jmiApartamentos);
	jMenu.add(jmiReservas);
	jMenu.addSeparator();
	jMenu.add(jmiSair);

	// Adiciona o Menu ao MenuBar
	jMenuBar.add(jMenu);
	setJMenuBar(jMenuBar);
    }

    /**
     * Quando um evento é acionado, esse metodo é executado
     * 
     * @param e
     */
    public void actionPerformed(ActionEvent e) {
	System.out.println(e.getSource());
    }

    public static void main(String args[]) {
	for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager
		.getInstalledLookAndFeels()) {
	    if ("Nimbus".equals(info.getName())) {
		try {
		    javax.swing.UIManager.setLookAndFeel(info.getClassName());
		} catch (ClassNotFoundException e) {
		    e.printStackTrace();
		} catch (InstantiationException e) {
		    e.printStackTrace();
		} catch (IllegalAccessException e) {
		    e.printStackTrace();
		} catch (UnsupportedLookAndFeelException e) {
		    e.printStackTrace();
		}
		break;
	    }
	}

	ReservasHotelFrame s = new ReservasHotelFrame();
	// s.criaJanela();
    }

    public void trocaContainer(Container containerEsconder,
	    Container containerMostrar) {
	containerEsconder.setVisible(false);
	containerMostrar.setVisible(true);
    }

}

Obrigado!

Nao entendi muito bem o q precisa naum, mas para menus naum tem segredo…

veja o exemplo de menu:

menu
menuitem1
menuitem2
menu -> menuitem1
-> menuitem2
separator
menuitem

para menus, vc usa Menu mesmo e para os itens de Menu vc usa menuItem e para Menus com submenus, vc adiciona os menuItem para o q vc quer.

naum tem segredo.

Uma dica: Use NetBeans IDE q ele ja faz tudo automaticamente pra vc…Use NetBeans e seja feliz.

t+ e boa sorte.

ixi, acho q escrevi mal ali.

Esse négocio do separator eu ja fiz no menu ali, ficou até bacana =]

Oque eu to querendo eh, fazer com que o meu conteudo ali, fosse modavel, tipo um jsp:include

no caso ai, quero sempre deixar o menu, e mudar somente os dados em baixo, que quando ele clicar em hotel vai aparecer uma imagem, dai quando ele clicar em serviços, aparece na mesma tela (ou seja, o conteudo anterior é escondido e um novo eh mostrado). Exemplo se fosse com jsp

Primeira pagina

<jsp:include src="menu.jsp">
<jsp:include src="hotel.jsp">

Segunda Pagina:

<jsp:include src="menu.jsp">
<jsp:include src="hotel.jsp">

Demais pagina:

<jsp:include src="menu.jsp">
<jsp:include src="jsp de qualquer conteudo do menu">

Entendeu?

Valeu! mt obrigado