Criar tela


Eu sou novo na programação e gostaria de estar criando essa tela mais meu código não está do jeito que imagino que deveria estar, será que alguém poderia me ajudar, segue abaixo o código:
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Toolkit;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

import Conexao.ConnectionFactory;
import DAO.MaquinaDAO;
import Variaveis_Globais.Variaveis_Globais;

public class ifrmCadMaquina extends JInternalFrame {

public static int iTipo1;
public static int iUsuario = Variaveis_Globais.siCodigo;

public static Connection conn = null;
public static PreparedStatement stmt = null;
public static ResultSet rs = null;

public static String sql = "";

public ifrmCadMaquina(int iTipo) throws SQLException {

    super("Cadastro de Máquina", true, true, true, true);

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

    setSize(screenSize.width, screenSize.height);

    JPanel panel1 = new JPanel();
    JPanel panel2 = new JPanel();

    panel1.setPreferredSize(new Dimension(screenSize.width, screenSize.height));
    panel2.setPreferredSize(new Dimension(screenSize.width, 30));

    panel1.setBackground(new Color(230, 220, 20));
    panel2.setBackground(new Color(230, 220, 20));

    Container container1 = getContentPane();
    container1.add(panel1);

    FlowLayout Layout = new FlowLayout(); // Funcionou mais centralizou tudo
    Layout.setAlignment(FlowLayout.LEFT);
    panel1.setLayout(Layout);

    panel2.setLayout(new BoxLayout(panel2, BoxLayout.LINE_AXIS));

    JLabel lblCodigo = new JLabel("Código: ", SwingConstants.LEFT);

    lblCodigo.setPreferredSize(new Dimension(100, 30));
    lblCodigo.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10));
    lblCodigo.setFont(new Font("Arial", Font.BOLD, 14));

    panel2.add(lblCodigo);

    JTextField txtCodigo = new JTextField();

    txtCodigo.setFont(new Font("Arial", Font.BOLD, 14));
    txtCodigo.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
    txtCodigo.setPreferredSize(new Dimension(50, 30));

    panel2.add(txtCodigo);

    JLabel lblPlaca = new JLabel("Placa: ", SwingConstants.LEFT);

    lblPlaca.setPreferredSize(new Dimension(100, 30));
    lblPlaca.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10));
    lblPlaca.setFont(new Font("Arial", Font.BOLD, 14));

    panel2.add(lblPlaca);

    JTextField txtPlaca = new JTextField();

    txtPlaca.setPreferredSize(new Dimension(50, 30));
    txtPlaca.setFont(new Font("Arial", Font.BOLD, 14));
    txtPlaca.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));

    panel2.add(txtPlaca);

    JLabel lblEspecoFinal = new JLabel("", SwingConstants.LEFT);

    lblEspecoFinal.setPreferredSize(new Dimension(600, 30));
    lblEspecoFinal.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10));
    lblEspecoFinal.setFont(new Font("Arial", Font.BOLD, 14));

    panel2.add(lblEspecoFinal);

    panel1.add(panel2);

}

}

Eu gostaria também de estar adicionando uma nova linha alinhada a direita e sei que tenho que criar vários layouts, mais será que alguém tem algum exemplo que possa me ajudar.

Vamos lá. Primeiro, vc está montando a GUI manualmente pq está aprendendo? Se for tudo bem, senão use uma IDE que faz isso para você, bastando arrastar os componentes. Das gratuitas eu gosto muito do NetBeans. Programar usando Swing na unha não é uma tarefa muito fácil para iniciantes, então se estiver com pressa, ou seja, for um sisteminha que você vai vender, tem que pegar o caminho mais rápido na construção, usando a ferramenta, e ir aprendendo os meandros do Swing para entender como como as coisas funcionam.

Quando for postar código fonte, use a opção </> no editor aqui do guj (ali na barrinha de ferramentas do editor do post).

Por fim, tente eliminar da sua vida esse gerundismo! “gostaria de estar criando” deveria ser “gostaria de criar”. “gostaria de estar adicionando” deveria ser “gostaria de adicionar”. Entendo seu cuidado com a polidez e a cordialidade na escrita, mas gerundismo é feio. O “gostaria” já vai dar a formalidade que você busca. Outra coisa: mais é + (adicionar), mas é adversativa. Por exemplo, em “mais será que alguém tem algum exemplo que possa me ajudar” o correto seria “mas será que alguém tem algum exemplo que possa me ajudar”. Tem que ter o domínio básico da nossa língua mãe :wink:

Para te ajudar no que você precisa, além do seu exemplo, que tal fazer um desenho, no paint mesmo, em cima do exemplo, mostrando o que quer? Agora, em relação ao seu código. Você tem um caminhão de problemas, tanto conceituais quanto de uso mesmo das funcionalidades. Parece que está usando algum material antigo, pois esse getContentPane() é da época do guaraná com rolha… Desde o Java 5, se não me engano, não há necessidade de obter o content pane para adicionar componentes em um container. Esse monte de campo estático está muito esquisito… Vi nos imports que você está implementando o padrão DAO, então a conexão, o PreparedStatement e o ResultSet ali não fariam sentido. Você precisa dar uma olhada na convenção de nomenclatura de classes, atributos, etc na linguagem Java. Se vc está programando para uma empresa e seguindo as diretrizes dela, ai vc desconsidera o que eu falei sobre nomenclatura… Evite ficar trocando a fonte e cores dos componentes. Fica uma verdadeira porcaria. Mantenha as cores e configurações padrão e só mude algo se realmente for importante.

Enfim, segue um exemplo básico. O ideal seria usar gerenciadores de layout melhores para o formulário ficar com uma cara mais bonita, mas na mão é um baita de um sofrimento (GridLayout, GridBagLayout e GroupLayout).

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.beans.PropertyVetoException;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

/**
 *
 * @author Prof. Dr. David Buzatto
 */
public class InternalFrameCadMaquina extends JInternalFrame {

    public InternalFrameCadMaquina() {

        super( "Cadastro de Máquina", true, true, true, true );
        
        JPanel painelCodigo = new JPanel();
        painelCodigo.setLayout( new FlowLayout( FlowLayout.LEFT ) );
        JLabel lblCodigo = new JLabel( "Código:" );
        JTextField txtCodigo = new JTextField( 10 );
        painelCodigo.add( lblCodigo );
        painelCodigo.add( txtCodigo );
        
        JPanel painelPlaca = new JPanel();
        painelPlaca.setLayout( new FlowLayout( FlowLayout.LEFT ) );
        JLabel lblPlaca = new JLabel( "Placa:" );
        JTextField txtPlaca = new JTextField( 10 );
        painelPlaca.add( lblPlaca );
        painelPlaca.add( txtPlaca );
        
        JPanel primeiraLinha = new JPanel();
        primeiraLinha.setLayout( new FlowLayout( FlowLayout.LEFT ) );
        primeiraLinha.setBackground( Color.GREEN );
        primeiraLinha.add( painelCodigo );
        primeiraLinha.add( painelPlaca );
        
        
        JPanel painelTeste1 = new JPanel();
        painelTeste1.setLayout( new FlowLayout( FlowLayout.LEFT ) );
        JLabel lblTeste1 = new JLabel( "Teste 1:" );
        JTextField txtTeste1 = new JTextField( 10 );
        painelTeste1.add( lblTeste1 );
        painelTeste1.add( txtTeste1 );
        
        JPanel painelTeste2 = new JPanel();
        painelTeste2.setLayout( new FlowLayout( FlowLayout.LEFT ) );
        JLabel lblTeste2 = new JLabel( "Teste 2:" );
        JTextField txtTeste2 = new JTextField( 10 );
        painelTeste2.add( lblTeste2 );
        painelTeste2.add( txtTeste2 );
        
        JPanel segundaLinha = new JPanel();
        segundaLinha.setLayout( new FlowLayout( FlowLayout.LEFT ) );
        segundaLinha.setBackground( Color.YELLOW );
        segundaLinha.add( painelTeste1 );
        segundaLinha.add( painelTeste2 );
        
        
        JPanel painelTeste3 = new JPanel();
        painelTeste3.setLayout( new FlowLayout( FlowLayout.LEFT ) );
        JLabel lblTeste3 = new JLabel( "Teste 3:" );
        JTextField txtTeste3 = new JTextField( 10 );
        painelTeste3.add( lblTeste3 );
        painelTeste3.add( txtTeste3 );
        
        JPanel painelTeste4 = new JPanel();
        painelTeste4.setLayout( new FlowLayout( FlowLayout.LEFT ) );
        JLabel lblTeste4 = new JLabel( "Teste 4:" );
        JTextField txtTeste4 = new JTextField( 10 );
        painelTeste4.add( lblTeste4 );
        painelTeste4.add( txtTeste4 );
        
        JPanel terceiraLinha = new JPanel();
        terceiraLinha.setLayout( new FlowLayout( FlowLayout.LEFT ) );
        terceiraLinha.setBackground( Color.BLUE );
        terceiraLinha.add( painelTeste3 );
        terceiraLinha.add( painelTeste4 );
        
        
        JButton btnSalvar = new JButton( "Salvar" );
        JButton btnCancelar = new JButton( "Cancelar" );
        
        JPanel linhaBotoes = new JPanel();
        linhaBotoes.setLayout( new FlowLayout( FlowLayout.RIGHT ) );
        linhaBotoes.setBackground( Color.CYAN );
        linhaBotoes.add( btnSalvar );
        linhaBotoes.add( btnCancelar );
        
        
        JPanel container = new JPanel();
        container.setLayout( new BoxLayout( container, BoxLayout.Y_AXIS ) );
        container.add( primeiraLinha );
        container.add( segundaLinha );
        container.add( terceiraLinha );
        container.add( linhaBotoes );
        
        setLayout( new BorderLayout() );
        add( container, BorderLayout.NORTH );
        
        
        pack();
        
        try {
            setMaximum( true );
        } catch ( PropertyVetoException exc ) {
        }

    }
    
    public static void main( String[] args ) {
        
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                
                JFrame fTeste = new JFrame();
                fTeste.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
                fTeste.setTitle( "Teste" );
                fTeste.setSize( 800, 600 );
                fTeste.setLocationRelativeTo( null );
                
                JDesktopPane dPane = new JDesktopPane();
                fTeste.add( dPane, BorderLayout.CENTER );
                
                InternalFrameCadMaquina iFrame = new InternalFrameCadMaquina();
                dPane.add( iFrame );
                iFrame.setVisible( true );
                
                fTeste.setVisible( true );
                
            }
        });
        
    }

}

2 curtidas

Muito obrigado pela ajuda eu realmente estou querendo aprender a programar com o GUI manualmente, mais sua ajuda resolveu minhas dúvidas, muito obrigado, e gostaria de agradecer seus conselhos serão muito úteis para mim.

1 curtida