O tutorial de hoje se concentrará nos botões JButton, vamos aprender a adicioná-los a tela que estamos desenvolvendo. Para isso aprendemos no tutorial anterior a trabalhar com o gerenciador de posicionamento e layout GridBagConstraints classe qual se origina a instância GridBagLayout.
O GridBagConstraints é o responsável pelo gerenciamento dos botões, campos e outros componentes da interface gráfica. Ele pertence a biblioteca java.awt. Em resumo, a classe GridBagConstraints especifica restrições para os componentes dispostos usando a classe GridBagLayout.
Até aqui criamos uma tela gráfica com JDialog, rótulos para descrever os campos e caixas de texto. A tela que está sendo criada tem o objetivo de gerir duas threads, a partir desta tela poderemos dar início a execução da thread ou parar a execução dA mesma. Com os campos adicionados até o momento a tela está assim estruturada.
Se você está chegando agora é de extrema importância que vá até o tutorial “GRIDBAGCONSTRAINTS” para aprender como foi feito para gerenciar as posições do layout no Swing. Ou ainda como foi posicionado o componente no grid. E também para saber como foi a construção do painel, bem como a adição dos Labels e TextFields.
JBUTTON ADICIONANDO BOTÕES
Agora iremos dar sequência a construção da tela adicionando os botões para que a gente possa interagir com as threads. Assim adicionaremos dois botões antes do construtor. Porém, obedecendo a uma ordem sequencial, serão adicionados logo após JTextField referente a segunda thread.
private JButton jButton1 = new JButton(“start”);
private JButton jButton2 = new JButton("stop");
Agora é preciso dar uma dimensão ao botão, então dentro construtor e sempre obedecendo a ordem de sequência vamos definir uma dimensão para cada botão, posicioná-los no grid e adicionando-os ao painel.
jButton1.SetPreferredSize(new Dimension(92, 25));
gridBagConstraints.gridy ++;
jPanel.add(jButton1, gridBagConstraints);
A implementação do segundo botão seguirá a mesma lógica, porém com a distinção de um único detalhe. Os componentes adicionados, foram posicionados um abaixo do outro, mas não queremos que seja assim com os botões. Desejamos adicionar os botões um ao lado do outro. Ou seja, eles permanecerão na mesma linha, isto é, o segundo botão moverá uma posição na linha do grid.
jButton2.setPreferredSize(new Dimension(92, 25));
gridBagConstraints.grid;
jPanel.add(jButton2, gridBagConstraints);
Entretanto, será necessário ajustar o posicionamento dos componentes para alinhá-los com os botões. Acontece que os botões ocupam o espaço de dois campos cada um, então deveremos fazer o mesmo com os demais componentes. Para isso iniciaremos uma propriedade que terá esta responsabilidade, ela será adicionada bem onde definimos a posição inicial dos componentes nos eixos x e y.
gridBagConstraints.gridwidth = 2;
Porém, antes de adicionarmos os botões teremos que informar que o gridBagConstraints voltará a ser 1;
gridBagConstraints.gridwidth = 1;
Dessa forma teremos a tela relativamente alinhada, e dessa forma o espaço que cada componente irá ocupar volta a ser um, e na sequência ainda adicionamos outros dois componentes.
AJUSTES DE POSICIONAMENTO
Tendo adicionado todos os campos que iremos precisar para a tela que estamos desenvolvendo, poderemos então proceder com alguns ajustes. O primeiro ajuste será o alinhamento de todos os componentes a esquerda.
gridBagConstraints.anchor = GridBagConstraints.WEST;
E antes deste alinhamento a esquerda iremos instanciar o objeto insets para ajustar ao alinhamento nos quatro pontos da tela, acima, a esquerda, abaixo e a direita.
gridBagConstraints.insets = new insets (5, 10, 5, 5);
O resultado dessas duas pequenas mudanças é mostrado abaixo. E com certeza visualmente está bem melhor.
Outra mudança que podemos fazer é desabilitar os campos TextField, visto que eles servirão apenas para exibir alguns dados. As linhas de códigos serão adicionadas logo abaixo de onde implementamos os campos de texto.
mostraTempo_01.setEditable(false);
mostraTempo_02.setEditable(false);
EM POUCAS PALAVRAS
De forma resumida, inicialmente definimos a posição inicial do primeiro componente, eixos x e y respectivamente na posição zero. E informamos que os quatro primeiros componentes Label e TextField ocuparão a largura de dois componentes, ou seja, os dois botões jbutton posicionados um ao lado do outro.
Então os quatro componentes são adicionados, e informamos ao gerenciador que o espaço a ser ocupado será novamente o espaço de um. Com isso, estamos determinando que o espaço de um componente será ocupado pelos dois botões, isto é, o gerenciador irá entender que tendo como referência o campo acima, os botões ocuparão um espaço equivalente. E assim concluímos o desenvolvimento do layout da tela.