Centralizar dialog na tela que o instânciou [Resolvido]

3 respostas
KaosBr

Boa noite,

Criei varias, jDialog’s, que são abertas por um jMenu em um jFrame. Todos esses compenentes citados abrem, no centro da tela do monitor.

Porém quero, que ao mover a tela principal, as dialogs fiquem centralizadas no frame e não no centro do monitor.

[]s

3 Respostas

gqferreira

Boa noite,

Acho que isso pode te ajudar:

package teste;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.WindowConstants;

public class Teste extends javax.swing.JFrame {
	private JButton btAbrirJDialog;
	
	public static void main(String[] args) {
		new Teste().setVisible(true);
	}
	/**
	 * Auto-generated main method to display this JFrame
	 */
	public Teste() {
		try {
			setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
			getContentPane().setLayout(null);
			{
				btAbrirJDialog = new JButton();
				getContentPane().add(btAbrirJDialog);
				btAbrirJDialog.setText("Abrir JDialog");
				btAbrirJDialog.setBounds(161, 122, 67, 22);
				
				btAbrirJDialog.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {						
						abrirJDIalog();
					}
				});
			}
			
			setSize(400, 300);
		} catch (Exception e) {
			//add your error handling code here
			e.printStackTrace();
		}
	}
	public void abrirJDIalog(){
		JDialog dialog = new JDialog();
		dialog.setSize(100,100);
		dialog.setTitle("Filho");
		dialog.setResizable(false);
		dialog.setModal(true);
		dialog.setLocationRelativeTo(this);
		dialog.setVisible(true);
	}

}

O segredo nesse codigo todo é o setLocationRelativeTo(centralizado_em_relacao_a_quem?);
Tive que colocar dentro de um metodo a parte pois se eu colocasse dentro do actionListener e passe o this como parametro, eu estaria passando o actionListener e nao o frame.

KaosBr

Perfeito! :slight_smile:

Obrigado :smiley:

[]s

gqferreira

De nada amigo, acho que agora vc pode colocar [Resolvido] no titulo…

Criado 27 de junho de 2010
Ultima resposta 28 de jun. de 2010
Respostas 3
Participantes 2