Boa noite,
Esta é a primeira tela que construo manualmente, normalmente opto pela IDE para contruir UI, agora para ganhar mais autonomia estou contruindo algumas telas manualmente.
No primeiro bloco de código a baixo, criei uma “tela inicial” para o sistema, partindo de um exemplo aqui do forum. Na medida que fui pegando intimidade, fui alterando o codigo original, até ter a saida abaixo. O problema é que não consigo centralizar, o JDialog, usando a “tela inicial” como referencia. O código responsável pela abertura do JDialog, está na linha 83 do primeiro bloco.
package telamanual;
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;
import javax.swing.WindowConstants;
/**
*
* @author Kaos
*/
public class Sistema extends JFrame {
/**
* Construtor
*/
public Sistema() {
this.inicializaTela();
}
private void inicializaTela() {
this.setTitle("Sistema");
this.setJMenuBar(getMenuPrincipal());
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setSize(800, 600);
this.setLocationRelativeTo(null);
}
private JMenuBar getMenuPrincipal() {
JMenuBar menuPrincipal = new JMenuBar();
JMenu menuArquivo = new JMenu("Arquivo");
menuArquivo.add(getMenuItemSair());
JMenu menuAplicativo = new JMenu("Sistema");
JMenu menuRelatorio = new JMenu("Relatorio");
JMenu menuManutencao = new JMenu("Manutencao");
JMenu menuAjuda = new JMenu("Ajuda");
menuAjuda.add(getMenuItemAjuda());
menuPrincipal.add(menuArquivo);
menuPrincipal.add(menuAplicativo);
menuPrincipal.add(menuRelatorio);
menuPrincipal.add(menuManutencao);
menuPrincipal.add(menuAjuda);
return menuPrincipal;
}
/**
* Menu: Arquivo / Item: Sair
* @return
*/
private JMenuItem getMenuItemSair() {
JMenuItem menuItemSair = new JMenuItem("Sair");
ActionListener acao = new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
};
menuItemSair.addActionListener(acao);
return menuItemSair;
}
/**
* Menu: Ajuda / Item: Sobre
*/
private JMenuItem getMenuItemAjuda() {
JMenuItem itemMenuSobre = new JMenuItem("Sobre");
ActionListener acao = new ActionListener() {
public void actionPerformed(ActionEvent e) {
Sobre sobre = new Sobre(new JFrame(), true);
sobre.setLocationRelativeTo(this);
}
};
itemMenuSobre.addActionListener(acao);
return itemMenuSobre;
}
/**
* Usado durante o desenvolvimento para facilitar a visualização da tela.
* @param args
*/
public static void main(String args[]) {
Sistema testeTela = new Sistema();
testeTela.setVisible(true);
}
}
Aviso da IDE, referente a linha 83, do código acima:

Abaixo o código, referente a JDialog:
package telamanual;
import java.awt.Frame;
import javax.swing.JDialog;
import javax.swing.WindowConstants;
/**
*
* @author Kaos
*/
public class Sobre extends JDialog {
/**
* Contrutor
* @param parent
* @param modal
*/
public Sobre(
Frame parent,
boolean modal
) {
super(parent, modal);
this.inicializaComponentes();
}
private void inicializaComponentes() {
this.setTitle("Sobre");
this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
this.setResizable(false);
this.setSize(400, 300);
this.setVisible(true);
}
}
Dúvidas:
-
O que está causando o problema na linha 83, do primeiro bloco?
-
Na 19 do segundo bloco, tem um parametro, “parent”. Copiei essa parte do código, de um JDialog, gerado automaticamente na IDE. E acabei mantendo por ser, a forma que estou acostumado a fazer, com que o JDialog fique “modal”. Por que e o que é o parent? Há outra forma de trabalhar esse contrutor, e garantir que a JDialog, fique “modal”?
[]s
Entendi, a implementação de ActionListener, estava gerando problemas.