Galera desenvolvi uma aplicação, mas a mesma sempre a abre na parte superior da tela, obs foi montada no NetBeans, qual a propriedade eu mudo para tal configuração ou onde coloco o código para funcionar?
Como fazer para a aplicação swing abrir no centro da tela?
26 Respostas
Resolvido:
public Cartao() {
initComponents();
setLocationRelativeTo(null);
para saber o tamanho da tela e centralizar um frame,
import java.awt.*;
import javax.swing.*;
public class CentrarTeste {
public static void main(String[] args) {
CentrarFrame frame = new CentrarFrame();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setVisible( true );
}
}
class CentrarFrame extends JFrame{
public CentrarFrame(){
setTitle("CentrarTeste");
setSize( DEFAULT_WIDTH, DEFAULT_HEIGHT );
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension tamanhoTela = kit.getScreenSize();
int width = tamanhoTela.width;
int height = tamanhoTela.height;
setLocation( width / 2, height / 2 );
}
public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 200;
}
espero ter ajudado.
Muito bom, eu tambem estava com essa duvida e as respostas foram bem esclarecedoras…
Boa !
Modifiquei o código para realmente aparecer centralizado:
this.setLocation(((Toolkit.getDefaultToolkit().getScreenSize().width / 2) - (this.getWidth() / 2)),
((Toolkit.getDefaultToolkit().getScreenSize().height / 2) - (this.getHeight() / 2)));
Galera desenvolvi uma aplicação, mas a mesma sempre a abre na parte superior da tela, obs foi montada no NetBeans, qual a propriedade eu mudo para tal configuração ou onde coloco o código para funcionar?
Faço assim;
import javax.swing.Box;
public class cpc001 extends javax.swing.JFrame {
…
…
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-490)/2, (screenSize.height-370)/2, 490, 370);
}
Espero ter ajudado
Lindberg
tentei todas estas opções e não consegui nenhuma :?
public class frmMainMenu extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JButton jButtonClient = null;
/**
* This is the default constructor
*/
public frmMainMenu() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(564, 367);
this.setLocation(((Toolkit.getDefaultToolkit().getScreenSize().width / 2) - (this.getWidth() / 2)),
((Toolkit.getDefaultToolkit().getScreenSize().height / 2) - (this.getHeight() / 2)));
this.setContentPane(getJContentPane());
this.setTitle("Jframe");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJButtonClient(), null);
}
return jContentPane;
}
/**
* This method initializes jButtonClient
*
* @return javax.swing.JButton
*/
private JButton getJButtonClient() {
if (jButtonClient == null) {
jButtonClient = new JButton();
jButtonClient.setBounds(new Rectangle(15, 13, 143, 39));
jButtonClient.setText("Clientes");
jButtonClient.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
new frmClient();
}
});
}
return jButtonClient;
}
}
tentei todas estas opções e não consegui nenhuma :?
Tenta com esta
this.setLocationRelativeTo(null);//caso dentro da própria classe
nomeDaClasse.setLocationRelativeTo(null);//caso fora da classe
tenta usando o
setLocation(100,100);
tenta usando o
setLocation(100,100);
Assim ele apenas vai colocar o frame há ± 100pixels da esquerda e ± 100 pixels do topo…
tentei todas estas opções e não consegui nenhuma :?
Tenta com estathis.setLocationRelativeTo(null);//caso dentro da própria classe
nomeDaClasse.setLocationRelativeTo(null);//caso fora da classe
Pois essa também já tentei isso! :?
Já não sei que fazer!
Com o setLocation(100, 100); e nem mexe!
Se voce está usando JFrame ou JDialog deve usar deve usar Frame.setLocationRelativeTo(null);
dessa forma ele ira centralizar a tua tela.
Se você estiver usando o JinternalFrame ai tem que fazer um calculo para re-enderizar a tela no centro da aplicação se for o caso me responde que te envio o codigo para a centralização dos internal frame.
ate Jardel
Tem algo errado com o q vc tá fazendo.
setLocationRelativeTo(null); coloca o JFrame no centro da tela.
Acabei de testar, alterando o teu initialize
private void initialize() {
this.setSize(564, 367);
// this.setLocation(((Toolkit.getDefaultToolkit().getScreenSize().width / 2) - (this.getWidth() / 2)),
// ((Toolkit.getDefaultToolkit().getScreenSize().height / 2) - (this.getHeight() / 2)));
// this.setContentPane(getJContentPane());
this.setLocationRelativeTo(null);
this.setTitle("Jframe");
}
E com a classe
public class Chama {
public static void main(String[] args_){
frmMainMenu frm = new frmMainMenu();
frm.setVisible(true);
}
}
E o JFrame é aberto bem ao centro.
Mesmo com a chamada dentro da classe a saída da tela foi como eu esperava.
mas vc especificou a classe com
this.setLocation();
?
Se voce está usando JFrame ou JDialog deve usar deve usarFrame.setLocationRelativeTo(null);
dessa forma ele ira centralizar a tua tela.Se você estiver usando o JinternalFrame ai tem que fazer um calculo para re-enderizar a tela no centro da aplicação se for o caso me responde que te envio o codigo para a centralização dos internal frame.
ate Jardel
Ele está utilizando um JFrame, o código está na pergunta do tópico.
E, sim, funciona como eu falei.
Problemas com a máquina dele.
Se voce está usando JFrame ou JDialog deve usar deve usarFrame.setLocationRelativeTo(null);
dessa forma ele ira centralizar a tua tela.Se você estiver usando o JinternalFrame ai tem que fazer um calculo para re-enderizar a tela no centro da aplicação se for o caso me responde que te envio o codigo para a centralização dos internal frame.
ate Jardel
Estou a usar JFrame. mas para o que é também posso usar um JInternalFrame e fazer FullScreen.
Veja os códigos que postei acima, observe e modifique de acordo com o que coloquei.
Se voce está usando JFrame ou JDialog deve usar deve usarFrame.setLocationRelativeTo(null);
dessa forma ele ira centralizar a tua tela.Se você estiver usando o JinternalFrame ai tem que fazer um calculo para re-enderizar a tela no centro da aplicação se for o caso me responde que te envio o codigo para a centralização dos internal frame.
ate Jardel
Ele está utilizando um JFrame, o código está na pergunta do tópico.
E, sim, funciona como eu falei.
Problemas com a máquina dele.
Que tipo de problemas?
Eu estou a usar eclipse com o Visual Editor, no Windows 7 :?
eu no netBeans usava
setLocationRelativeTo(getRootPane()); mas aqui não funciona!
Eu uso o mesmo ambiente (eclipse + Windows 7 - 64b)
Segue aí o anexo com o print do resultado…
A diferença entre os 32b e os 64b não tem nada a ver com isso :? realmente não entendo o que se passa :? desde que depois no .JAR funcione tudo é o que que importa.
O código que testou foi exactamente o que mandei da primiera vez certo?
Sim.
Aí vai ele.
Só comentei a linha do frmClient por não possuir esta classe.
public class frmMainMenu extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JButton jButtonClient = null;
/**
* This is the default constructor
*/
public frmMainMenu() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(564, 367);
// this.setLocation(((Toolkit.getDefaultToolkit().getScreenSize().width / 2) - (this.getWidth() / 2)),
// ((Toolkit.getDefaultToolkit().getScreenSize().height / 2) - (this.getHeight() / 2)));
// this.setContentPane(getJContentPane());
this.setLocationRelativeTo(null);
this.setTitle("Jframe");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJButtonClient(), null);
}
return jContentPane;
}
/**
* This method initializes jButtonClient
*
* @return javax.swing.JButton
*/
private JButton getJButtonClient() {
if (jButtonClient == null) {
jButtonClient = new JButton();
jButtonClient.setBounds(new Rectangle(15, 13, 143, 39));
jButtonClient.setText("Clientes");
jButtonClient.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
//new frmClient();
}
});
}
return jButtonClient;
}
public static void main(String[] args_){
frmMainMenu frm = new frmMainMenu();
frm.setVisible(true);
}
}
Na verdade o problema deve ser do meu computador, porque acontece o mesmo em todos os formulários! Ou poderá ser do próprio java?
Versão da JVM ou resolução de vídeo (mais provável)
Reinstala o java e ve o que da, mas a principio eh pra ta funcionando
Vou tentar essas opções! Muito obrigado pela ajuda! O pessoal aqui é 5*. Obrigado
Obrigado galera para mim o " setLocationRelativeTo(null); " funciono :).
Opa! sei que o post é antigo… mas estava procurando e não achei a resposta em lugar algum…
descobri e estou postando caso alguém não tenha conseguido…
setLocationRelativeTo(null);//aqui ele define que o canto superior esquerdo estará no meio da tela
setLocation((int)getLocation().getX()-getWidth()/2, (int)getLocation().getY()-getHeight()/2); // agora ele alinha corretamente
retificando…
só o
setLocationRelativeTo(null);//aqui ele define que o canto superior esquerdo estará no meio da tela
resolve, estava dando erro pois após ele eu estava colocando um “setMinimumSize()”…
