Interface Gráfica em Java (GridLayout)?

Guus, como eu faço pra organizar esses labels e txts, eu quero que eles fiquem padrão, alinhados; tipo o primeiro o label e depois o txt, exemplo: Nome: ______________ ; e também que os jbuttons ficassem abaixo;

package testwindows;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class TestWindows {
    //private JDialog caixa;
    public static void main(String[] args) {
    
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Mostra Botão de Fechar do Sistema
        frame.setSize(500, 450); // Define tamanho da Janela
        frame.setLocation(700,300); //Centraliza a Janela
       
        
        
        //caixa.setVisible(true);
        JPanel painel = new JPanel(); //Instancia um novo container para inserir componentes
        painel.setLayout(new GridLayout(4,4));
        
        
        
        
        //caixa.setVisible(true);
        
        // Menus
        JMenu menuAluno = new JMenu("Aluno");
        JMenu menuProfessor = new JMenu("Professor");
        JMenu menuCurso = new JMenu("Curso");
        JMenu menuSistema = new JMenu("Sistema");
        JMenuBar barraMenu = new JMenuBar();
        
        //Itens Menu Aluno
        JMenuItem itemCadastrarAluno = new JMenuItem("Cadastrar");//Adiciona interação rel ao item/método "cadastrar" de "Aluno"
        itemCadastrarAluno.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
            JDialog caixacadastraraluno = new JDialog(frame); //Instancia uma nova caixa de diálogo para 
        caixacadastraraluno.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); //Mostra Botão de fechar da Caixa?
        caixacadastraraluno.setBounds(800, 500, 600, 250); //Define o tamanho da caixa
        caixacadastraraluno.setTitle("Cadastrar Aluno"); //Define o título da caixa
        caixacadastraraluno.setModal(true); // Perguntar a professora; //Seria pra ter caixs com modos diferentes também?
        caixacadastraraluno.setResizable(true); //Redimenciona a caixa
        JLabel nomealuno = new JLabel(" Nome: "); //Instancia um novo rótulo
        JLabel cpfaluno = new JLabel(" CPF:"); //Instancia um novo rótulo
        JLabel idadealuno = new JLabel(" Idade: "); //Instancia um novo rótulo
        JLabel cursoaluno = new JLabel(" Curso: "); //Instancia um novo rótulo
        JPanel painelcadastraraluno = new JPanel(); //Instancia um novo painel para "Cadastro Aluno"
        painelcadastraraluno.setLayout(new GridLayout(6,4)); //Tipo do painel
        painelcadastraraluno.add(nomealuno); // Adiciona o rótulo "nomealuno" ao painel
        painelcadastraraluno.add(cpfaluno); // Adiciona o rótulo "cpfaluno" ao painel
        painelcadastraraluno.add(idadealuno); // Adiciona o rótulo "idadealuno" ao painel
        painelcadastraraluno.add(cursoaluno); // Adiciona o rótulo "cursoaluno" ao painel
        caixacadastraraluno.add(painelcadastraraluno); // A caixa adiciona o painel
        JTextField txtcadastrarnomealuno = new JTextField();
        JTextField txtcadastrarcpfaluno = new JTextField();
        JTextField txtcadastraridadealuno = new JTextField();
        JTextField txtcadastrarcursoaluno = new JTextField();
        painelcadastraraluno.add(txtcadastrarnomealuno);
        painelcadastraraluno.add(txtcadastraridadealuno);
        painelcadastraraluno.add(txtcadastraridadealuno);
        painelcadastraraluno.add(txtcadastrarcursoaluno);
        JButton btcadastraraluno = new JButton("Cadastrar");
        JButton btcancelarcadastraraluno = new JButton("Cancelar");
        painelcadastraraluno.add(btcadastraraluno);
        painelcadastraraluno.add(btcancelarcadastraraluno);
        
        caixacadastraraluno.setVisible(true);// Mostra a caixa
            }
        });
        JMenuItem itemProcurarAluno = new JMenuItem("Procurar");
        itemProcurarAluno.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
            JDialog caixaprocuraraluno = new JDialog(frame); //Instancia uma nova caixa de diálogo para 
            caixaprocuraraluno.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); //Mostra Botão de fechar da Caixa?
            caixaprocuraraluno.setBounds(750, 700, 350, 150); //Define o tamanho da caixa
            caixaprocuraraluno.setTitle("Procurar Aluno"); //Define o título da caixa
            caixaprocuraraluno.setModal(true); // Perguntar a professora; //Seria pra ter caixa com modos diferentes também?
            caixaprocuraraluno.setResizable(true); //Redimenciona a caixa
            JLabel cpfaluno = new JLabel(" CPF:"); //Instancia um novo rótulo
            JPanel painelprocuraraluno = new JPanel(); //Instancia um no painel pra minha caixa
            painelprocuraraluno.setLayout(new GridLayout(3,2)); // Aqui envia o tipo do painel
            painelprocuraraluno.add(cpfaluno); // Aqui o rótulo "cpfaluno" é add no painel
            caixaprocuraraluno.add(painelprocuraraluno); // Aqui a caixa Dialog adiciona o painel
            caixaprocuraraluno.setVisible(true); //Mostra a caixa
            }
        });
        JMenuItem itemRemoverAluno = new JMenuItem("Remover");
        itemRemoverAluno.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
            JDialog caixaremoveraluno = new JDialog(); //Instancia uma nova caixa de Dialog
            caixaremoveraluno.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // Mostrao Botão de fechar da caixa
            caixaremoveraluno.setBounds(350, 300, 350, 150); // Tamanho da caixa
            caixaremoveraluno.setTitle("Remover Aluno"); // Título da caixa
            caixaremoveraluno.setModal(true); //Perguntar a professora; //Seria pra ter caixa com modos diferentes também?
            caixaremoveraluno.setResizable(true); // Redimencionar a caixa
            JPanel painelremoveraluno = new JPanel(); // Instancia um novo painel
            JLabel cpfaluno = new JLabel(" CPF: "); // Instancia o rótulo "cpfaluno";
            painelremoveraluno.setLayout(new GridLayout(3,2)); // Aqui envia o tipo do painel
            painelremoveraluno.add(cpfaluno); // Aqui o rótulo "cpfaluno" é add no painel
            caixaremoveraluno.add(painelremoveraluno); // Aqui a caixa Dialog adiciona o painel
            painelremoveraluno.add(cpfaluno); // O painel adiciona o rótulo "cpfaluno"
            caixaremoveraluno.setVisible(true); //Mostra a caixa
            }
        });
        barraMenu.add(menuAluno);// Add o Menu Aluno na barra
        //add itens no Menu Aluno
        menuAluno.add(itemCadastrarAluno);
        menuAluno.add(itemProcurarAluno);
        menuAluno.add(itemRemoverAluno);
        
        //Itens Menu Professor
        JMenuItem itemCadastrarProfessor = new JMenuItem("Cadastrar");
        JMenuItem itemProcurarProfessor = new JMenuItem("Procurar");
        JMenuItem itemRemoverProfessor = new JMenuItem("Remover");
        barraMenu.add(menuProfessor); // Add o Menu Professor na barra
        //add itens no Menu Professor
        menuProfessor.add(itemCadastrarProfessor);
        menuProfessor.add(itemProcurarProfessor);
        menuProfessor.add(itemRemoverProfessor);
        
        //Itens Menu Curso
        JMenuItem itemCadastrarCurso = new JMenuItem("Cadastrar");
        JMenuItem itemProcurarCurso = new JMenuItem("Procurar");
        JMenuItem itemRemoverCurso = new JMenuItem("Remover");
        barraMenu.add(menuCurso);
        //add itens no Menu Curso
        menuCurso.add(itemCadastrarCurso);
        menuCurso.add(itemProcurarCurso);
        menuCurso.add(itemRemoverCurso);
        
        //Itens Menu Sistema
        JMenuItem itemSobreSistema = new JMenuItem("Sobre");
        itemSobreSistema.addActionListener(new ActionListener(){// Adiciona interação real no item/método "Sobre"
            public void actionPerformed(ActionEvent e){
             JOptionPane.showMessageDialog(itemSobreSistema, "Desenvolvido por Douglas Rafael", "Versão 1.0", JOptionPane.INFORMATION_MESSAGE);   
            }
        });
        

        JMenuItem itemSairSistema = new JMenuItem("Sair");// Adiciona interação real no item/método "Sair"
        itemSairSistema.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                int retorno = JOptionPane.showConfirmDialog(itemSairSistema, "Deseja Realmente Sair? ", "Sair", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
                if (retorno == JOptionPane.YES_OPTION)
                    System.exit(0);
                else if(retorno == JOptionPane.NO_OPTION)
                    JOptionPane.showMessageDialog(itemSairSistema, "Obrigado por continuar", "Agradecimento", JOptionPane.INFORMATION_MESSAGE);
            }
        });
        //Add itens no Menu
        menuSistema.add(itemSobreSistema);
        menuSistema.add(itemSairSistema);
        
        
        
        barraMenu.add(menuSistema); //add Menu Sistema na barra
        frame.getContentPane().add(barraMenu, BorderLayout.NORTH);// Exibir a barra no Painel
      
        frame.setVisible(true);//Tornar Painel visível
    }
    
}

muda para absolute layout

Como assim?
mudar o setLayout(new GridLayout(3,2)); ??

Isso.

Se estiver usando uma ferramenta para design.
Não é muito meu forte fazer as telas no braço…

Caso contrario, mude a ordem:

JPanel painelcadastraraluno = new JPanel(); //Instancia um novo painel para "Cadastro Aluno"
painelcadastraraluno.setLayout(new GridLayout(6,4)); //Tipo do painel
painelcadastraraluno.add(nomealuno); // Adiciona o rótulo "nomealuno" ao painel
JTextField txtcadastrarnomealuno = new JTextField();
painelcadastraraluno.add(cpfaluno); // Adiciona o rótulo "cpfaluno" ao painel
JTextField txtcadastrarcpfaluno = new JTextField();
painelcadastraraluno.add(idadealuno); // Adiciona o rótulo "idadealuno" ao painel
JTextField txtcadastraridadealuno = new JTextField();
painelcadastraraluno.add(cursoaluno); // Adiciona o rótulo "cursoaluno" ao painel
JTextField txtcadastrarcursoaluno = new JTextField();
caixacadastraraluno.add(painelcadastraraluno); // A caixa adiciona o painel
1 curtida

Nada… a professora só passou no braço kkk, mas é bom; ainda n consegui alinhar

como o fabiio2 disse acima, mude a ordem.

O GridLayout vem alinhando de cima para baixo, da esquerda para a direita. Portanto, um gridlayout(4, 2) ( 4 linhas e 2 colunas ), vai alinhar como dito antes, de cima para baixo, da esquerda para a direita. Assim você adiciona 1° o LabelNome depois o TextNome, ai o LabelCPF e o TextCPF assim por diante…

Fica tipo isso:

                  Nome:                                             Katia Neves

                    CPF:                                             123.156.123-59

+/- isso…

Tentei sua dica, mas n funcionou tbm :confused:

Boa Noite Douglas…olha faz o seguinte:

Pega essa parte do seu código:

    JLabel nomealuno = new JLabel(" Nome: "); //Instancia um novo rótulo
    JLabel cpfaluno = new JLabel(" CPF:"); //Instancia um novo rótulo
    JLabel idadealuno = new JLabel(" Idade: "); //Instancia um novo rótulo
    JLabel cursoaluno = new JLabel(" Curso: "); //Instancia um novo rótulo
    JPanel painelcadastraraluno = new JPanel(); //Instancia um novo painel para "Cadastro Aluno"
    painelcadastraraluno.setLayout(new GridLayout(6,4)); //Tipo do painel
    painelcadastraraluno.add(nomealuno); // Adiciona o rótulo "nomealuno" ao painel
    painelcadastraraluno.add(cpfaluno); // Adiciona o rótulo "cpfaluno" ao painel
    painelcadastraraluno.add(idadealuno); // Adiciona o rótulo "idadealuno" ao painel
    painelcadastraraluno.add(cursoaluno); // Adiciona o rótulo "cursoaluno" ao painel
    caixacadastraraluno.add(painelcadastraraluno); // A caixa adiciona o painel
    JTextField txtcadastrarnomealuno = new JTextField();
    JTextField txtcadastrarcpfaluno = new JTextField();
    JTextField txtcadastraridadealuno = new JTextField();
    JTextField txtcadastrarcursoaluno = new JTextField();
    painelcadastraraluno.add(txtcadastrarnomealuno);
    painelcadastraraluno.add(txtcadastraridadealuno);
    painelcadastraraluno.add(txtcadastraridadealuno);
    painelcadastraraluno.add(txtcadastrarcursoaluno);
    JButton btcadastraraluno = new JButton("Cadastrar");
    JButton btcancelarcadastraraluno = new JButton("Cancelar");
    painelcadastraraluno.add(btcadastraraluno);
    painelcadastraraluno.add(btcancelarcadastraraluno);

E troca por essa: ( é a mesma coisa só mudei a ordem que é adicionado no gridlayout do JPanel e alterei a quantidade de linhas e colunas) e vê se é isso que você quer, se não for me explica de novo que tento ajudar

    JLabel nomealuno = new JLabel(" Nome: "); //Instancia um novo rótulo
    JLabel cpfaluno = new JLabel(" CPF:"); //Instancia um novo rótulo
    JLabel idadealuno = new JLabel(" Idade: "); //Instancia um novo rótulo
    JLabel cursoaluno = new JLabel(" Curso: "); //Instancia um novo rótulo
    
    JButton btcadastraraluno = new JButton("Cadastrar");
    JButton btcancelarcadastraraluno = new JButton("Cancelar");
    
    JTextField txtcadastrarnomealuno = new JTextField();
    JTextField txtcadastrarcpfaluno = new JTextField();
    JTextField txtcadastraridadealuno = new JTextField();
    JTextField txtcadastrarcursoaluno = new JTextField();
    
    JPanel painelcadastraraluno = new JPanel(); //Instancia um novo painel para "Cadastro Aluno"
    painelcadastraraluno.setLayout(new GridLayout(6,2,5,5)); //Tipo do painel
    painelcadastraraluno.add(nomealuno); // Adiciona o rótulo "nomealuno" ao painel
    painelcadastraraluno.add(txtcadastrarnomealuno);
    
    painelcadastraraluno.add(cpfaluno); // Adiciona o rótulo "cpfaluno" ao painel
    painelcadastraraluno.add(txtcadastrarcpfaluno);
    
    painelcadastraraluno.add(idadealuno); // Adiciona o rótulo "idadealuno" ao painel
    painelcadastraraluno.add(txtcadastraridadealuno);
    
    painelcadastraraluno.add(cursoaluno); // Adiciona o rótulo "cursoaluno" ao painel
    painelcadastraraluno.add(txtcadastrarcursoaluno);
    
    painelcadastraraluno.add(btcadastraraluno);
    painelcadastraraluno.add(btcancelarcadastraraluno);

Testa ai e me retorna…

Se preferir, faz assim.

OBS: NÃO É RECOMENDADO FAZER ESSA BAGUNÇA. É APENAS PARA VOCÊ ENTENDER COMO FUNCIONA O GridLayout.

Comece mudando essa linha:

caixacadastraraluno.setBounds(800, 500, 600, 250); //Define o tamanho da caixa

por essa:

caixacadastraraluno.setBounds(400, 400, 450, 120); //Define o tamanho da caixa

e esse codigo todo:

JLabel nomealuno = new JLabel(" Nome: "); //Instancia um novo rótulo
        JLabel cpfaluno = new JLabel(" CPF:"); //Instancia um novo rótulo
        JLabel idadealuno = new JLabel(" Idade: "); //Instancia um novo rótulo
        JLabel cursoaluno = new JLabel(" Curso: "); //Instancia um novo rótulo
        JPanel painelcadastraraluno = new JPanel(); //Instancia um novo painel para "Cadastro Aluno"
        painelcadastraraluno.setLayout(new GridLayout(6,4)); //Tipo do painel
        painelcadastraraluno.add(nomealuno); // Adiciona o rótulo "nomealuno" ao painel
        painelcadastraraluno.add(cpfaluno); // Adiciona o rótulo "cpfaluno" ao painel
        painelcadastraraluno.add(idadealuno); // Adiciona o rótulo "idadealuno" ao painel
        painelcadastraraluno.add(cursoaluno); // Adiciona o rótulo "cursoaluno" ao painel
        caixacadastraraluno.add(painelcadastraraluno); // A caixa adiciona o painel
        JTextField txtcadastrarnomealuno = new JTextField();
        JTextField txtcadastrarcpfaluno = new JTextField();
        JTextField txtcadastraridadealuno = new JTextField();
        JTextField txtcadastrarcursoaluno = new JTextField();
        painelcadastraraluno.add(txtcadastrarnomealuno);
        painelcadastraraluno.add(txtcadastraridadealuno);
        painelcadastraraluno.add(txtcadastraridadealuno);
        painelcadastraraluno.add(txtcadastrarcursoaluno);
        JButton btcadastraraluno = new JButton("Cadastrar");
        JButton btcancelarcadastraraluno = new JButton("Cancelar");
        painelcadastraraluno.add(btcadastraraluno);
        painelcadastraraluno.add(btcancelarcadastraraluno);

por esse:

JLabel nomealuno = new JLabel(" Nome: "); //Instancia um novo rótulo
JLabel cpfaluno = new JLabel(" CPF:"); //Instancia um novo rótulo
JLabel idadealuno = new JLabel(" Idade: "); //Instancia um novo rótulo
JLabel cursoaluno = new JLabel(" Curso: "); //Instancia um novo rótulo
        
JButton btcadastraraluno = new JButton("Cadastrar");
JButton btcancelarcadastraraluno = new JButton("Cancelar");

JTextField txtcadastrarnomealuno = new JTextField();
JTextField txtcadastrarcpfaluno = new JTextField();
JTextField txtcadastraridadealuno = new JTextField();
JTextField txtcadastrarcursoaluno = new JTextField();

JPanel painelcadastraraluno = new JPanel(); //Instancia um novo painel para "Cadastro Aluno"
painelcadastraraluno.setLayout(new GridLayout(0,4)); //Tipo do painel

painelcadastraraluno.add(new JLabel(""));
painelcadastraraluno.add(new JLabel(""));
painelcadastraraluno.add(new JLabel(""));
painelcadastraraluno.add(new JLabel(""));

painelcadastraraluno.add(nomealuno); // Adiciona o rótulo "nomealuno" ao painel
painelcadastraraluno.add(txtcadastrarnomealuno);

painelcadastraraluno.add(cpfaluno); // Adiciona o rótulo "cpfaluno" ao painel
painelcadastraraluno.add(txtcadastrarcpfaluno);

painelcadastraraluno.add(idadealuno); // Adiciona o rótulo "idadealuno" ao painel
painelcadastraraluno.add(txtcadastraridadealuno);

painelcadastraraluno.add(cursoaluno); // Adiciona o rótulo "cursoaluno" ao painel
painelcadastraraluno.add(txtcadastrarcursoaluno);

painelcadastraraluno.add(new JLabel(""));
painelcadastraraluno.add(new JLabel(""));
painelcadastraraluno.add(new JLabel(""));
painelcadastraraluno.add(new JLabel(""));
painelcadastraraluno.add(new JLabel(""));

painelcadastraraluno.add(btcadastraraluno);
painelcadastraraluno.add(btcancelarcadastraraluno);
painelcadastraraluno.add(new JLabel(""));

Tenta ai… vou terminar um estudo aqui sobre o JavaFX ( que tá tenso ) e deitar… se tiver online até sua resposta… tento ajudar.

1 curtida

Resolveu amiga, obrigado;