Tela centralizada ao topo

6 respostas Resolvido
Hundea

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);
			
	}
}

6 Respostas

Jonathan_Medeiros

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.

Hundea

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

staroski
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);
Hundea

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 %

staroski

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.

rodriguesabner
Solucao aceita
initComponents();
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    Point centerPoint = ge.getCenterPoint();

    int dx = centerPoint.x - getWidth() / 2;
    int y = 0;
    setLocation(dx, y);
Criado 24 de junho de 2019
Ultima resposta 24 de jun. de 2019
Respostas 6
Participantes 4