Chamando Telas JDialog
Tenho uma tela principal (JFrame) e alguns JMenu e JMenuItem e preciso chamar tela de Clientes(JDialog). Tentei usar setVisible(true) mas não funciona, ele não mostra a tela! Tentei usando main() mas também não mostra! Alguem ai tem alguma idéia?
Grato!
ºbrunoº
Curtidas 0
Respostas
Rafael Parizi
29/04/2010
E ae Bruno,
Cara você pode usar método ou ainda apenas o método .
Verifica se o seu menu está com a Action correta.
Caso queira posicionar o seu JDialog no centro da tela, usa esse método
Espero ter colaborado.
Abraço.
show(boolean b)
show()
jDialog.setLocationRelativeTo(null);
GOSTEI 0
ºbrunoº
29/04/2010
Hmm... ajudou sim, mas se puder detalhar mais um pouco, sou iniciante, iria ajudar mais ainda! Grato!
GOSTEI 0
Rafael Parizi
29/04/2010
Olha só Bruno, esse é o método que fiz para chamar um jDialog:
Primeiramente, o jDialogMensagem é posicionado no centro da tela com o método
Depois, cria-se um objeto da classe [b]Dimension[/b] para poder dar um tamanho ao seu jDialog. Dá-se um tamanho [i]width[/i] e [i]height[/i] e seta-se o minimo tamanho do seu jdialog com essa dimensão.
Por fim, mostra o jDialog com o:
[/b]
jDialogMensagem.setLocationRelativeTo(null);
Dimension d = new Dimension();
d.setSize(200, 200);
jDialogMensagem.setMinimumSize(d);
jDialogMensagem.setVisible(true);
jDialogMensagem.setLocationRelativeTo(null);
Dimension d = new Dimension();
d.setSize(200, 200);
jDialogMensagem.setMinimumSize(d);
jDialogMensagem.setVisible(true);
GOSTEI 0
ºbrunoº
29/04/2010
Hmm... vou tentar fazer aqui =D
Uso o NetBeans 6.7 IDE e uso o seguinte codigo para deixar JDialog no centro da tela:
Bom esse metodo que vc citou serve somente para chamar JFrame para JDialog ou poderia chamar J-Frame para JPanel?
Dimension tamanhoTela = getToolkit().getScreenSize();
Dimension tamanho = getSize();
setLocation((tamanhoTela.width - tamanho.width) / 2, (tamanhoTela.height - tamanho.height) / 2);
GOSTEI 0
Rafael Parizi
29/04/2010
Se você está pensando em mostrar ou não jPanel através do setvisible vai funcionar.
Quanto ao setLocationRelativeTo(null) não testei se funciona. Acredito que não. :P
Analisando o método setLocationRelativeTo nota-se:
Parecido ou igual ao que vc faz.
Abraço.
setLocation(centerPoint.x - paneSize.width / 2, centerPoint.y - paneSize.height / 2);
GOSTEI 0
ºbrunoº
29/04/2010
Bom... mais uma duvida: Onde eu insiro os codigos?
No initcomponents() ou no actionPerformed da ligação?
GOSTEI 0
Rafael Parizi
29/04/2010
Bruno,
No meu caso (vc pode chamar aonde achar melhor, geralmente onde é a chamada de eventos de botão, menus...etc), chamo os jDialog's quando ocorre alguma exceção.
Por exemplo, tenho um jTextField para entrada de números inteiros. Caso o usuário forneça uma String, lança uma exceção do tipo [color=red]NumberFormatException[/color] chamando um jDialog que informa ao usuário que a sua entrada é inválida.
Os códigos referentes à chamada do jDialog vão no [i]cacth[/i] do bloco de exceptions [i]try{....}catch{Exception e}[/i].
[i]No NetBeans IDE vc pode adicionar um evento (bt direito mouse no componente e eventos..). Aí larga a chamada dentro do método que o NetBeans cria. :)[/i]
Abraço.
GOSTEI 0
ºbrunoº
29/04/2010
Hmm... Então, como se trata de um sub-menu, vou dar um actionPerformed e inserir o codigo para chamar a minha tela de Clientes! Ou ao menos eu sempre fazia assim!
GOSTEI 0
ºbrunoº
29/04/2010
private void Clientes ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Clientes.setLocationRelativeTo(null);
Dimension d = new Dimension();
d.setSize(200, 200);
Clientes.setMinimumSize(d);
Clientes.setVisible(true);
}
GOSTEI 0
Rafael Parizi
29/04/2010
Bem, eu não sei como que você nomeia as suas variáveis.
A idéia é vc usar os ActionPerformed em componentes do seu frame.
Aí vai um código que copiei de um sistema que eu estou desenvolvendo.
Perceba que no [i]else[/i] eu chamo o jDialog.
Mas o ActionPerformed foi definida para um componente da minha aplicação. Um jButton.
Abraço
private void jButtonAddNovoActionPerformed(java.awt.event.ActionEvent evt) {
Criterio c = new Criterio();
ArmazenaDados arm = new ArmazenaDados();
String criterios = ".....";
c.setNomeCriterio(jTextFieldNomeNovo.getText());
if (!arm.existeCriterio(c.getNomeCriterio())) {
informacoesProcesso.add("-> Criterio adicionado: " + c.getNomeCriterio());
criteriosDefinidos.add(c);
jTextFieldNomeNovo.setText("");
} else {
jLabelStatus.setText("Critério já existente!");
jDialogMensagem.setLocationRelativeTo(null);
jDialogMensagem.show();
}
arm.armazenarCriteriosDefinidos(criteriosDefinidos);
ArrayList<Criterio> critsDefinidos = new ArrayList<Criterio>();
critsDefinidos = arm.recuperarCriteriosDefinidos();
for (Criterio cTemp : critsDefinidos) {
criterios += "-> " + cTemp.getNomeCriterio() + "\n";
}
jTextAreaCriteriosDefinidos.setText(criterios);
}
GOSTEI 0
Rafael Parizi
29/04/2010
[quote="?Bruno?"]
Joguei dentro do actionPerformed mas deu o seguinte erro:
[img]http://i42.tinypic.com/etb98i.jpg[/img]
O que isso significa?
Clientes é o seu jDialog? ou é uma classe de clientes?
private void Clientes ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Clientes.setLocationRelativeTo(null);
Dimension d = new Dimension();
d.setSize(200, 200);
Clientes.setMinimumSize(d);
Clientes.setVisible(true);
}
GOSTEI 0
ºbrunoº
29/04/2010
Vou explicar mais ou menos como eu crio as telas:
Clientes.java e um JDialog, eu criava um JFrame e jogava em cima um Panel! Mas acabei mudando e criando direto os JPanel e JDialog!
Tela principal e um JFrame, Clientes que estou desenvolvendo e um JDialog, mas ta dificil de fazer o JFrame chamar o JDialog!
Eu ate poderia mudar esse JDialog para um JFrame, mas dai ele iria abrir outro "programa", iria virar uma baita gambiarra!
Esse JFrame que e minha tela Principal, criei ela no modo Designer, sei que e possivel criar ela no modo codigo-fonte mas e bem complicado.
Em relação aos botões, sempre ativei actionPerformed e ali insiro os codigos necessarios para executar o que o botao pede, no caso ali, seria para chamar outra tela, de um JMenuItem para um JDialog!
Entendeu?
Segue abaixo o codigo-fonte da forma que trabalho:
package Menus;
import java.awt.Dimension;
public class Principal extends javax.swing.JFrame {
/** Creates new form Principal */
public Principal() {
initComponents();
setExtendedState( MAXIMIZED_BOTH );
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
Menu = new javax.swing.JMenuBar();
Arquivo = new javax.swing.JMenu();
AlterarSenha = new javax.swing.JMenuItem();
Separador = new javax.swing.JPopupMenu.Separator();
Sair = new javax.swing.JMenuItem();
Cadastro = new javax.swing.JMenu();
Clientes = new javax.swing.JMenuItem();
Funcionarios = new javax.swing.JMenuItem();
jSeparator2 = new javax.swing.JPopupMenu.Separator();
Multimidia = new javax.swing.JMenu();
Jogos = new javax.swing.JMenu();
PlaystationII = new javax.swing.JMenuItem();
Computador = new javax.swing.JMenuItem();
Filmes = new javax.swing.JMenuItem();
Relatorios = new javax.swing.JMenu();
Configuracoes = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Sistema");
setName("Principal"); // NOI18N
setResizable(false);
Arquivo.setText("Arquivo");
Arquivo.setFont(new java.awt.Font("Verdana", 0, 11));
Arquivo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ArquivoActionPerformed(evt);
}
});
AlterarSenha.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK));
AlterarSenha.setFont(new java.awt.Font("Verdana", 0, 11));
AlterarSenha.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/4655_128x128.png"))); // NOI18N
AlterarSenha.setText("Alterar Senha");
Arquivo.add(AlterarSenha);
Arquivo.add(Separador);
Sair.setFont(new java.awt.Font("Verdana", 0, 11));
Sair.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/Cópia de exit-128.png"))); // NOI18N
Sair.setText("Sair");
Sair.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
SairActionPerformed(evt);
}
});
Arquivo.add(Sair);
Menu.add(Arquivo);
Cadastro.setText("Cadastro");
Cadastro.setFont(new java.awt.Font("Verdana", 0, 11));
Clientes.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_D, java.awt.event.InputEvent.CTRL_MASK));
Clientes.setFont(new java.awt.Font("Verdana", 0, 11));
Clientes.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/People-128.png"))); // NOI18N
Clientes.setText("Clientes");
Clientes.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ClientesActionPerformed(evt);
}
});
Cadastro.add(Clientes);
Funcionarios.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, java.awt.event.InputEvent.CTRL_MASK));
Funcionarios.setFont(new java.awt.Font("Verdana", 0, 11));
Funcionarios.setText("Funcionários");
Cadastro.add(Funcionarios);
Cadastro.add(jSeparator2);
Multimidia.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/Movies-black-icon.png"))); // NOI18N
Multimidia.setText("Multimídia");
Multimidia.setFont(new java.awt.Font("Verdana", 0, 11));
Jogos.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/Gamespot-64.png"))); // NOI18N
Jogos.setText("Jogos");
Jogos.setFont(new java.awt.Font("Verdana", 0, 11));
PlaystationII.setFont(new java.awt.Font("Verdana", 0, 11));
PlaystationII.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/Sony-Playstation-2-icon.png"))); // NOI18N
PlaystationII.setText("Playstation 2");
Jogos.add(PlaystationII);
Computador.setFont(new java.awt.Font("Verdana", 0, 11));
Computador.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/black-server-icon.png"))); // NOI18N
Computador.setText("Computador");
Computador.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ComputadorActionPerformed(evt);
}
});
Jogos.add(Computador);
Multimidia.add(Jogos);
Filmes.setFont(new java.awt.Font("Verdana", 0, 11));
Filmes.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/popcorn-128x128.png"))); // NOI18N
Filmes.setText("Filmes");
Multimidia.add(Filmes);
Cadastro.add(Multimidia);
Menu.add(Cadastro);
Relatorios.setText("Configurações");
Relatorios.setFont(new java.awt.Font("Verdana", 0, 11));
Menu.add(Relatorios);
Configuracoes.setText("Ajuda");
Configuracoes.setFont(new java.awt.Font("Verdana", 0, 11));
jMenuItem1.setFont(new java.awt.Font("Verdana", 0, 11));
jMenuItem1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/8446_128x128.png"))); // NOI18N
jMenuItem1.setText("Manual do Usuário");
Configuracoes.add(jMenuItem1);
Menu.add(Configuracoes);
setJMenuBar(Menu);
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 279, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
private void ArquivoActionPerformed(java.awt.event.ActionEvent evt) {
}
private void ClientesActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void SairActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
System.exit(0);
}
private void ComputadorActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
public static void main() {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Principal().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JMenuItem AlterarSenha;
private javax.swing.JMenu Arquivo;
private javax.swing.JMenu Cadastro;
private javax.swing.JMenuItem Clientes;
private javax.swing.JMenuItem Computador;
private javax.swing.JMenu Configuracoes;
private javax.swing.JMenuItem Filmes;
private javax.swing.JMenuItem Funcionarios;
private javax.swing.JMenu Jogos;
private javax.swing.JMenuBar Menu;
private javax.swing.JMenu Multimidia;
private javax.swing.JMenuItem PlaystationII;
private javax.swing.JMenu Relatorios;
private javax.swing.JMenuItem Sair;
private javax.swing.JPopupMenu.Separator Separador;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JPopupMenu.Separator jSeparator2;
// End of variables declaration
}
GOSTEI 0