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

2 respostas
alexandrenilton

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!

2 Respostas

fernandopaiva

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.

alexandrenilton

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

Criado 23 de outubro de 2011
Ultima resposta 23 de out. de 2011
Respostas 2
Participantes 2