Pessoal boa noite!
Fiquei uns 2 meses longe do java, e estou com dificuldades na interface gráfica.
Estou trabalhando no desenvolvimento de uma agenda eletrônica, sei que o netbeeans ofereçe muitas facilidades na criação da interface com o usuário, porém quero aprender como tudo funciona.
Bem, o meu problema é o seguinte, tenho um JDesktop e varias JInternalFrame, mas quando abro uma JInternalFrame na tela principal (JDesktop) e movimento esta janela interna os botões que estão na janela principal “desaparecem” juntamente com as imagens. Mas quando passo o mause eles voltam a “ativa”.
se alguém puder me ajudar, eu vou ficar muito agradecido mesmo…;
segue os códigos…
Janela Principal
package br.com.TelasInserts;
import br.com.TelasViws.UsuarioTelaAtividade;
import br.com.TelasViws.UsuarioTelaContato;
import br.com.TelasViws.UsuarioTelaGrupo;
import br.com.TelasViws.UsuarioTelaPasta;
import br.com.pojo.entidades.db.Grupo;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.beans.PropertyVetoException;
import java.util.Locale;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ButtonGroup;
import javax.swing.GroupLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTextArea;
import javax.swing.UIManager;
/**
*
* @author Tassilo
*/
//Classe principal
//Primeira tela que extends a classe JFrame;
public class UsuarioTelaPrincipal extends JFrame implements ActionListener
{
//Declarando atributos com encapsulamento máximo;
//Declarando atributo que representa a Janela principal
private JDesktopPane DesktopjanelaPrincipal;
//Declarando as janelas internas
private UsuarioTelaNovoGrupo usuarioTelaNovoGrupo;
private UsuarioTelaNovoContato usuarioTelaNovoContato;
private UsuarioTelaNovaPasta usuarioTelaNovaPasta;
private UsuarioTelaNovaAtividade usuarioTelaNovaAtividade;
private UsuarioTelaAtividade usuarioTelaAtividade;
private UsuarioTelaContato usuarioTelaContato;
private UsuarioTelaGrupo usuarioTelaGrupo;
private UsuarioTelaPasta usuarioTelaPasta;
//Declarando um atributo, BemVindo, como JLabel (Texto Fixo);
private JLabel lblBemVindo;
private JLabel lblNome;
private JLabel lblfotoagenda;
//Declarando os botões da tela principal, JButton;
private JButton btnAtivAgendadas;
private JButton btnNovaAtividade;
private JButton btnContatos;
private JButton btnNovoContato;
private JButton btnGrupos;
private JButton btnNovoGrupo;
private JButton btnPasta;
private JButton btnNovaPasta;
//Declarando os atributos da barra de menu
private JMenuBar barra;
private JMenu arquivo, editar, formatar, ajuda;
private JMenu corfundo;
//Itens do Arquivo
private JMenuItem sair, salvsenha;
//Itens do Editar
private JMenuItem login, nome, email, endereco, cidade;
private ButtonGroup corfundogrupo;
//Itens do Formatar
private JRadioButtonMenuItem azul, verde, vermelho, rosa, preto;
//Itens do Ajuda
private JMenuItem empresa, documentacao;
//Declarando campo editavel do tipo txt;
private JTextArea txtTela;
public UsuarioTelaPrincipal ()
{
//Construtor padrão da super classe
super("AGENDA ELETRÔNICA");
//"Chamando" o método
componentesTela();
}
//Método que contem todos so componentes da tela
private void componentesTela()
{
Container tela = getContentPane();
//Criando objetos
//Criando uma instância do objeto JMenuBar
barra = new JMenuBar();
//Adicionando a barra na tela
setJMenuBar(barra);
//Instanciando os objetos da barra
arquivo = new JMenu("Arquivo");
editar = new JMenu("Editar");
formatar = new JMenu("Formatar");
ajuda = new JMenu("Ajuda");
//Adicionando o objetos na barra
barra.add(arquivo);
barra.add(editar);
barra.add(formatar);
barra.add(ajuda);
//Instanciando os objetos itens
//Itens do Arquivo
salvsenha = new JMenuItem("Salvar Senha aqui Ctrl A");
sair = new JMenuItem("Sair");
//Itens do Editar
login = new JMenuItem("Alterar Login");
nome = new JMenuItem("Alterar Nome");
email = new JMenuItem("Alterar E-Mail");
endereco = new JMenuItem("Alterar Endereco");
cidade = new JMenuItem("Alterar Cidade");
//Itens do Formatar
corfundo = new JMenu("Cor de Fundo");
azul = new JRadioButtonMenuItem("Azul");
verde = new JRadioButtonMenuItem("Verde");
vermelho = new JRadioButtonMenuItem("Vermelho");
rosa = new JRadioButtonMenuItem("Rosa");
preto = new JRadioButtonMenuItem("Preto");
//Itens do Ajuda
empresa = new JMenuItem("Falar com Administrador");
documentacao = new JMenuItem("Exibir Documentação");
//Adicionando os atalhos para os objetos
arquivo.setMnemonic(KeyEvent.VK_A);
editar.setMnemonic(KeyEvent.VK_E);
formatar.setMnemonic(KeyEvent.VK_F);
ajuda.setMnemonic(KeyEvent.VK_J);
sair.setMnemonic(KeyEvent.VK_S);
//Referenciando o item ao seu Menu
//Itens do Arquivo
arquivo.add(salvsenha);
arquivo.addSeparator();
arquivo.add(sair);
//Itens do Editar
editar.add(login);
editar.add(nome);
editar.add(email);
editar.add(endereco);
editar.add(cidade);
//Itens do Formatar
formatar.add(corfundo);
corfundo.add(azul);
corfundo.add(verde);
corfundo.add(vermelho);
corfundo.add(rosa);
corfundo.add(preto);
//Itens do Ajuda
ajuda.add(empresa);
ajuda.add(documentacao);
//
setLocationRelativeTo(null);
//ImageIcon agenda = new ImageIcon("agenda.jpeg");
lblBemVindo = new JLabel("BEM VINDO(a): ");
lblNome = new JLabel("Tassilo Duarte Souza");
lblfotoagenda = new JLabel("");
btnAtivAgendadas = new JButton("Atividades Agendadas");
btnNovaAtividade = new JButton("Nova Atividade");
btnContatos = new JButton("Contatos");
btnNovoContato = new JButton("Adicionar Contato");
btnGrupos = new JButton("Grupos");
btnNovoGrupo = new JButton("Criar Grupo");
btnPasta = new JButton("Pasta");
btnNovaPasta = new JButton("Criar Pasta");
txtTela = new JTextArea();
//Posicionando os campos na tela
lblBemVindo.setBounds(510, 5, 100, 30);
lblNome.setBounds(600, 5, 200, 30);
//Posicionando a imagem na tela
lblfotoagenda.setBounds(10,375, 190, 150);
//Adicionando uma imagem na tela principal usando o JLabel
lblfotoagenda.setIcon(new ImageIcon("imagens/agenda.jpg"));
//Adicionando imagens aos botões
btnAtivAgendadas.setIcon(new ImageIcon("imagens/atividade.png"));
btnNovaAtividade.setIcon(new ImageIcon("imagens/novatividade.png"));
btnContatos.setIcon(new ImageIcon("imagens/user.png"));
btnNovoContato.setIcon(new ImageIcon("imagens/adduser.png"));
btnGrupos.setIcon(new ImageIcon("imagens/users.png"));
btnNovoGrupo.setIcon(new ImageIcon("imagens/addusers.png"));
btnPasta.setIcon(new ImageIcon("imagens/pasta.png"));
btnNovaPasta.setIcon(new ImageIcon("imagens/novapasta.png"));
btnAtivAgendadas.setBounds(10, 45, 190, 40);
btnNovaAtividade.setBounds(10, 85, 190, 40);
btnContatos.setBounds(10, 125, 190,40);
btnNovoContato.setBounds(10, 165, 190, 40);
btnGrupos.setBounds(10, 205, 190, 40);
btnNovoGrupo.setBounds(10, 245, 190, 40);
btnPasta.setBounds(10, 285, 190, 40);
btnNovaPasta.setBounds(10, 325, 190, 40);
//Adicionando dicas aos botões
btnAtivAgendadas.setToolTipText("Exibir atividades agendadas!");
btnNovaAtividade.setToolTipText("Cadastrar uma nova atividade!");
btnContatos.setToolTipText("Visualizar todos os contatos!");
btnNovoContato.setToolTipText("Adicionar um novo contato!");
btnGrupos.setToolTipText("visualizar meus grupos!");
btnNovoGrupo.setToolTipText("Adicionar um novo grupo!");
btnPasta.setToolTipText("Visualizar minhas pastas!");
btnNovaPasta.setToolTipText("Adicionar uma nova pasta!");
//Definindo a cor de fundo das dicas
UIManager.put("ToolTip.background",SystemColor.info);
setLocationRelativeTo(null);
txtTela.setBounds(200, 45, 550, 360);
//Definindo o lyout da tela
//setLayout(null);
//Adicionando os campos na tela
add (lblBemVindo);
add (lblNome);
tela.add (lblfotoagenda);
add (btnAtivAgendadas);
add (btnNovaAtividade);
add (btnContatos);
add (btnNovoContato);
add (btnGrupos);
add (btnNovoGrupo);
add (btnPasta);
add (btnNovaPasta);
//add (txtTela);
//se eu tiro o comentário deste setLayout null a tela principal fica com as cores que quero, porém as janelas internas não abrem.
//tela.setLayout(null);
//Adicionando cor na janela principal (tela)
tela.setBackground(new Color(155, 205, 155));
//Especificando a cor azul para o JLabel Nome
lblNome.setForeground(new Color(0, 0, 255));
//Criando uma istância de JDesktopPane
DesktopjanelaPrincipal = new JDesktopPane();
DesktopjanelaPrincipal.setLocation(0, 50);
getContentPane().add (DesktopjanelaPrincipal);
//Adicionando os ActionListener
btnAtivAgendadas.addActionListener(this);
btnNovaAtividade.addActionListener(this);
btnContatos.addActionListener(this);
btnNovoContato.addActionListener(this);
btnGrupos.addActionListener(this);
btnNovoGrupo.addActionListener(this);
btnPasta.addActionListener(this);
btnNovaPasta.addActionListener(this);
//Configurando a tela
setBounds(0, 0, 800, 615);
//Deixando a tela visivel
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e ) {
if(e.getSource() == btnAtivAgendadas){
mostrarJanelaAtividade();
}
if(e.getSource() == btnNovaAtividade){
mostrarJanelaNovaAtividade();
}
if(e.getSource() == btnContatos){
mostrarJanelaContato();
}
if(e.getSource() == btnNovoContato){
mostrarJanelaNovoContato();
}
if(e.getSource() == btnGrupos){
mostrarJanelaGrupo();
}
if(e.getSource()==btnNovoGrupo){
//Chama o método
mostrarJanelaNovoGrupo();
}
if(e.getSource() == btnPasta){
mostrarJanelaPasta();
}
if(e.getSource() == btnNovaPasta){
mostrarJanelaNovaPasta();
}
}
//Método que retorna
public void mostrarJanelaInterna(JInternalFrame frame){
//Verifica se a janela interna já está na área de trabalho
//Se o retorno for falso, o método ComponentZOrder retornará -1
if(DesktopjanelaPrincipal.getComponentZOrder(frame)== -1){
//Adiciona a janela interna a área de trabalho
DesktopjanelaPrincipal.add(frame);
}
//Torna a janela interna visivel
frame.setVisible(true);
try {
//Seleciona a janela que acaba de ser aberta
frame.setSelected(true);
//Exeção, caso não seja possível selecionar a janela
} catch(PropertyVetoException exessao){
Logger.getLogger(UsuarioTelaPrincipal.class.getName()).log(Level.SEVERE, null, exessao);
}
}
/**Os métodos a seguir verificaom se a janela não existe, se o retorno for verdadeiro
* é criada uma nova instância da classe, e em seguida é adicionada no desktope
*/
public void mostrarJanelaNovoGrupo()
{//Inicio do método mostrarJanelaNovoGrupo
if(usuarioTelaNovoGrupo == null)
{//Inicio do if
//Caso a janela interna ainda não tenha sido instânciada, cria uma nova instância
usuarioTelaNovoGrupo = new UsuarioTelaNovoGrupo();
}//Fim do if
//"Chamando" o método mostrar janela interna passando como parâmetro a janela intera
mostrarJanelaInterna(usuarioTelaNovoGrupo);
}//Fim do método mostrarJanelaNovoGrupo
public void mostrarJanelaNovoContato()
{
if (usuarioTelaNovoContato == null)
{
usuarioTelaNovoContato = new UsuarioTelaNovoContato();
}
mostrarJanelaInterna(usuarioTelaNovoContato);
}
public void mostrarJanelaNovaPasta()
{
if (usuarioTelaNovaPasta == null)
{
usuarioTelaNovaPasta = new UsuarioTelaNovaPasta();
}
mostrarJanelaInterna(usuarioTelaNovaPasta);
}
public void mostrarJanelaNovaAtividade()
{
if(usuarioTelaNovaAtividade == null)
{
usuarioTelaNovaAtividade = new UsuarioTelaNovaAtividade();
}
mostrarJanelaInterna(usuarioTelaNovaAtividade);
}
public void mostrarJanelaAtividade()
{
if(usuarioTelaAtividade == null)
{
usuarioTelaAtividade = new UsuarioTelaAtividade();
}
mostrarJanelaInterna(usuarioTelaAtividade);
}
public void mostrarJanelaContato()
{
if(usuarioTelaContato == null)
{
usuarioTelaContato = new UsuarioTelaContato();
}
mostrarJanelaInterna(usuarioTelaContato);
}
public void mostrarJanelaGrupo()
{
if(usuarioTelaGrupo == null)
{
usuarioTelaGrupo = new UsuarioTelaGrupo();
}
mostrarJanelaInterna(usuarioTelaGrupo);
}
public void mostrarJanelaPasta()
{
if(usuarioTelaPasta == null)
{
usuarioTelaPasta = new UsuarioTelaPasta();
}
mostrarJanelaInterna(usuarioTelaPasta);
}
}