Tela centralizada ao topo

Tenho esse código, uma tela inicial, centralizei ela mas gostaria que ficasse centralizado ao topo da tela, qual modificação devo fazer?
aceito críticas referente ao código.

package br.com.login.telas;

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;

public class TelaPrincipal extends JFrame{
	//Barra menu
	JMenuBar barra = new JMenuBar();
	
	//menu Item
	JMenu JMmovimento = new JMenu("Movimento");
	JMenu JMcadastro = new JMenu("Cadastro");
	JMenu JMrelatorios = new JMenu("Relatórios");
	JMenu JMconfiguracao = new JMenu("Configuração");
	JMenu JMsuporte = new JMenu("Suporte");
	JMenu JMsair = new JMenu("Sair");
	
	//Criando item para menu
	
	JMenuItem itemEntrada = new JMenuItem("Entrada");
	JMenuItem itemSaida = new JMenuItem("Saida");
	
	JMenuItem itemMotoristas = new JMenuItem("Motoristas");
	JMenuItem itemVeiculos = new JMenuItem("Veículos");
	
	JMenuItem itemRelatorioFrota = new JMenuItem("Veículos");
	JMenuItem itemRelatorioConsumo = new JMenuItem("Consumo");
	JMenuItem itemRelatorioEstoque = new JMenuItem("Estoque");
	JMenuItem itemRelatorioMotoristas = new JMenuItem("Motoristas");
	
	JMenuItem itemConfigAcesso = new JMenuItem("Acesso");

	JMenuItem itemExit = new JMenuItem("Exit");
	

	public TelaPrincipal(){
		
		
		setJMenuBar(barra);

		
		//adicionando item a barra
		barra.add(JMmovimento);
		barra.add(JMcadastro);
		barra.add(JMrelatorios);
		barra.add(JMconfiguracao);
		barra.add(JMsuporte);
		barra.add(JMsair);
		
		//adicionando item a ao item barra
		JMmovimento.add(itemEntrada);
		JMmovimento.add(itemSaida);
		
		JMcadastro.add(itemMotoristas);
		JMcadastro.add(itemVeiculos);
		
		JMrelatorios.add(itemRelatorioFrota);
		JMrelatorios.add(itemRelatorioConsumo);
		JMrelatorios.add(itemRelatorioEstoque);
		JMrelatorios.add(itemRelatorioMotoristas);
		
		JMconfiguracao.add(itemConfigAcesso);
		
		JMsair.add(itemExit);
		
//----------------------------AÇÕES DE BOTÕES TELA PRINCIPAL --------------------------
		//adicionando ação ao item ao itemMotoristas da barra 
		itemMotoristas.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				new TelaCadastroMotorista();
				
			}
			});
		
		//adicionando ação ao item a ao item barra
		itemExit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				System.exit(0); //fecha a aplicação
				
			}
			});
		
//-----------------------------CONFIGURAÇÃO DA PÁGINA------------------------------------
		
		setLayout(null);
		setSize(500,200); //x y
		setTitle("SISVEL - Tela Principal");
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
		setResizable(false);
			
	}
}

Você precisa ajustar essa configuração para que a tela seja posicionada na posição em que você queira!

O null trás por default o frame centralizado se não me engano.

1 curtida

sim, você teria como me da um exemplo de código para que seja posicionada ao meio da tela e no topo?

Assuma a posição y como zero;
Calcule a posição x dessa forma: (largura da tela - largura da janela) / 2;
Em seguida faça: setLocation(x, y);

1 curtida

mas para cada resolução de tela a aplicação não ficaria mais abaixo? pois acredito que não tenha como definir como um HTML definindo %

Não, pois a coordenada y sempre será 0.
E o x sempre será ajustado com base na largura da tela.

É só você criar um método para posicionamento através de percentuais, aí vai calcular de acordo com o tamanho da resolução da tela.

1 curtida
    initComponents();
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    Point centerPoint = ge.getCenterPoint();

    int dx = centerPoint.x - getWidth() / 2;
    int y = 0;
    setLocation(dx, y);
2 curtidas