Você está aqui: Java ::: Gerenciadores de Layout ::: GridBagLayout

Como definir a posição (alinhar) componentes nas células de um GridBagLayout usando GridBagConstraints.anchor

Quantidade de visualizações: 14824 vezes


Por padrão, se um componente for menor que o espaço reservado a ele em uma célula de um GridBagLayout, ele será alinhado ao centro, tanto verticalmente quanto horizontalmente. Muitas vezes este não é o comportamente que queremos. Assim, podemos usar a variável GridBagConstraints.anchor para definir como o componente será alinhado na célula. Veja os valores possíveis:

Valores absolutos (só um componente por célula): CENTER (padrão - centro), NORTH (cima), SOUTH (embaixo), EAST (direita), WEST (esquerda), NORTHEAST (acima e à direita), NORTHWEST (acima e à esquerda), SOUTHEAST (abaixo e à direita) e SOUTHWEST (abaixo e à esquerda).

Valores relativos (mais de um componente por célula): PAGE_START, PAGE_END, LINE_START, LINE_END, FIRST_LINE_START, FIRST_LINE_END, LAST_LINE_START e LAST_LINE_END.

O trecho de código abaixo mostra como alinhar botões em células que excedem seus tamanhos:
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;

public class Estudos extends JFrame{
  public Estudos(){
    super("Como usar a classe GridBagLayout");

    // define o layout
    setLayout(new GridBagLayout());
    
    // define uma borda para aumentar o espaço
    // entre as bordas da janela e o gerenciador
    // de layout
    ((JComponent)getContentPane()).setBorder(
       new EmptyBorder(10, 10, 10, 10));

    // cria o GridBagConstraints
    GridBagConstraints gbc = new GridBagConstraints();

    // controla o espaço entre os componentes
    // e as linhas do GridBagLayout.
    // aqui nós definimos 2 pixels para os
    // lados de cima, esquerda, inferior e direita
    gbc.insets = new Insets(2, 2, 2, 2);

    // adiciona componentes à janela
    // este primeiro botão ocupará três células
    // na primeira linha
    gbc.gridy = 0; // linha
    gbc.gridx = 0; // coluna
    gbc.gridwidth = 3; // três células na linha
    // alinha o botão à esquerda
    gbc.anchor = GridBagConstraints.WEST;
    add(new JButton("Botão 1"), gbc);

    gbc.gridy = 1; // linha
    gbc.gridx = 0; // coluna
    gbc.gridwidth = 1;
    // alinha ao centro novamente
    gbc.anchor = GridBagConstraints.CENTER;
    add(new JButton("Botão 2"), gbc);

    gbc.gridy = 1; // linha
    gbc.gridx = 1; // coluna
    add(new JButton("Botão 3"), gbc);

    gbc.gridy = 1; // linha
    gbc.gridx = 2; // coluna
    add(new JButton("Botão 4"), gbc);    
    
    // este último botão ocupará três células
    // na terceira linha
    gbc.gridy = 2; // linha
    gbc.gridx = 0; // coluna
    gbc.gridwidth = 3; // três células na linha
    // alinha o botão à direita
    gbc.anchor = GridBagConstraints.EAST;
    add(new JButton("Botão 5"), gbc);

    //setSize(350, 150);
    pack(); // ajusta o tamanho da janela ao
            // dos componentes
    setVisible(true);    
  }

  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}


Link para compartilhar na Internet ou com seus amigos:

Java ::: Desafios e Lista de Exercícios Resolvidos ::: Strings e Caracteres

Exercícios Resolvidos de Java - Como retornar o código ASCII associado a um caractere em Java - Ler um caractere e retornar o código ASCII correspondente

Quantidade de visualizações: 431 vezes
Pergunta/Tarefa:

Escreva um programa Java que pede para o usuário informar um caractere (letra ou número) e mostre o código ASCII correspondente.

Sua saída deverá ser parecida com:

Informe um caractere: A
Você informou o caractere: A
O código ASCII correspondente é: 65
Resposta/Solução:

Veja a resolução comentada deste exercício em Java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    // para ler a entrada do usuário
    Scanner entrada = new Scanner(System.in);
    
    // vamos pedir para o usuário informar uma letra, símbolo ou pontuação
    System.out.print("Informe um caractere: ");
    
    // vamos ler o caractere informado
    char caractere = entrada.nextLine().charAt(0);
    
    // agora vamos obter o código ASCII correspondente
    int codigo = (int)caractere;
    
    // e mostramos o resultado
    System.out.println("Você informou o caractere: " + caractere);
    System.out.println("O código ASCII correspondente é: " + codigo);
  }
}

O Código Padrão Americano para o Intercâmbio de Informação (do inglês American Standard Code for Information Interchange - ASCII, pronunciado [áski]) é um sistema de representação de letras, algarismos e sinais de pontuação e de controle, através de um sinal codificado em forma de código binário (cadeias de bits formada por vários 0 e 1), desenvolvido a partir de 1960, que representa um conjunto de 128 sinais: 95 sinais gráficos (letras do alfabeto latino, algarismos arábicos, sinais de pontuação e sinais matemáticos) e 33 sinais de controle, utilizando 7 bits para representar todos os seus símbolos.


Java ::: Coleções (Collections) ::: ArrayList

Java para iniciantes - Como embaralhar os elementos de uma ArrayList usando o método shuffle() da classe Collections

Quantidade de visualizações: 13355 vezes
Nesta dica mostrarei como usar o método estático shuffle() da classe Collections da linguagem Java para misturar, ou seja, embaralhar os elementos de um objeto da classe ArrayList.

Veja o código completo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

import java.util.ArrayList;
import java.util.Collections;
 
public class Estudos{
  public static void main(String[] args){
    // cria uma ArrayList que conterá strings
    ArrayList<String> nomes = new ArrayList<String>();
     
    // adiciona itens na lista
    nomes.add("Carlos");
    nomes.add("Maria");
    nomes.add("Fernanda");
    nomes.add("Osmar");    
     
    // exibe os elementos da ArrayList
    System.out.println("Ordem original:\n");
    for(int i = 0; i < nomes.size(); i++){
      System.out.println(nomes.get(i));    
    }  
 
    // Vamos embaralhar os itens da ArrayList
    Collections.shuffle(nomes); 
 
    // exibe os elementos da ArrayList
    System.out.println("\nElementos embaralhados:\n");
    for(int i = 0; i < nomes.size(); i++){
      System.out.println(nomes.get(i));
    }
 
    System.exit(0);
  }
}

Ao executar este código nós teremos o seguinte resultado:

Ordem original:

Carlos
Maria
Fernanda
Osmar

Elementos embaralhados:

Carlos
Fernanda
Osmar
Maria


Java ::: Tratamento de Erros ::: Erros de Tempo de Execução

Java para iniciantes - Como tratar o erro OutOfMemoryError no Java

Quantidade de visualizações: 11936 vezes
O erro OutOfMemoryError é apresentado quando a Java Virtual Machine (JVM) não consegue alocar um objeto por falta de memória e o Garbagge Collector não liberou mais memória ainda. Este é um erro que não deve ser apanhado em um bloco try...catch, ou seja, se não há memória para alocar novos objetos, é fácil entender que não haverá memória para tal procedimento. O melhor a fazer é deixar o programa terminar e verificar a causa do problema.

Veja a posição da classe OutOfMemoryError na hierarquia de classes da plataforma Java:

java.lang.Object
  java.lang.Throwable
    java.lang.Error
      java.lang.VirtualMachineError
        java.lang.OutOfMemoryError


Esta classe implementa a interface Serializable.

Uma das causas mais comuns para o erro OutOfMemoryError é a instanciação exagerada de objetos, principalmente em laços (loops). Uma forma de aumentar a memória RAM a ser usada é definindo opções na linha de comando para o java.exe. Algumas destas opções são -Xss64k -Xoss300k -Xms4m e -Xmx10m.


Vamos testar seus conhecimentos em Fundações

Fundações profundas

Fundações profundas podem ser classificadas de diferentes maneiras. Uma forma de distinguir os diferentes tipos de estaca é pelo material empregado em sua composição.

Com base no exposto, assinale com V (verdadeiro) ou F (falso) as proposições a seguir, sobre estacas de madeira.

( ) A madeira em contato com o oxigênio do ar tende a apresentar fungos que inibem a deterioração do material.

( ) As estacas de madeira apodrecem rapidamente se mantidas permanentemente debaixo d'água.

( ) No Brasil, estacas de madeira são amplamente utilizadas de forma permanente em obras comerciais e residenciais.

Assinale a alternativa que indica, de cima para baixo, a ordem correta.

A) V, F, F.

B) V, V, V.

C) F, F, F.

D) F, F, V.

E) V, V, F.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fundações

Fundações

Ano: 2019 Banca: IBADE Órgão: Prefeitura de Jaru - RO Prova: IBADE - 2019 - Prefeitura de Jaru - RO - Engenheiro Civil

Uma sondagem foi realizada segundo a norma ABNT NBR 6484:2001 (Solo - Sondagens de simples reconhecimento com SPT - Método de ensaio). Após a execução das 3 etapas previstas no ensaio, o seguinte resultado foi apresentado:

8/16 - 10/14 - 13/16

O índice de resistência à penetração (N) é:

A) 18

B) 23

C) 31

D) 46

E) 54
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Hidrologia

(Udesc 2011) Segundo a Agência Nacional de Energia Elétrica (Aneel), existem no Brasil oito bacias hidrográficas. Assinale a alternativa correta em relação a essas bacias.

A) As bacias do Paraná e do Uruguai formam a Bacia Platina. Esta última drena somente 5% do território nacional, e seu potencial hidrelétrico instalado é pequeno e inexpressivo.

B) A Bacia do Rio São Francisco é a segunda maior bacia brasileira, e seu rio principal é totalmente navegável.

C) A maior bacia é a do rio Amazonas, que recebe afluentes dos dois lados e possui o maior volume de água do planeta.

D) A Bacia do Rio Tocantins recebe seus dois principais afluentes: o Araguaia e o Tietê. Possui a segunda maior usina do país, mas seu potencial hidrelétrico é o menor de todas as bacias hidrográficas brasileiras.

E) A Bacia do Atlântico Norte/Nordeste é a terceira maior bacia hidrográfica do Brasil. Seus rios principais são o Madeira e o Juruá.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

Qual o resultado da execução do seguinte código Python?

soma = 0
for i in range(0, 10):
  if i == 4 or i == 6:
    continue
  soma = soma + 3
  
print("A soma é: {0}".format(soma))

A) A soma é: 24

B) A soma é: 15

C) A soma é: 28

D) A soma é: 23

E) A soma é: 20
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

O exercício do direito à propriedade

Ainda sobre as ações judiciais correlatas aos direitos de vizinhança, mais especificamente sobre as ações de demarcação e divisão de propriedades, retificação de registros imobiliários e relação entre esses procedimentos, assinale a alternativa correta no que toca aos seus objetivos, às hipóteses de cabimento e às demais peculiaridades:

A) A ação de demarcação serve para esclarecer os limites divisórios entre dois prédios de dois proprietários diferentes.

B) O procedimento de retificação de matrícula serve para individualizar em matrículas separadas um bem que é de propriedade conjunta (condomínio).

C) A ação de demarcação dispensa memorial descritivo e prova pericial no processo.

D) As ações demarcatória e divisória não podem ser cumuladas na mesma ação, pois têm objetos diferentes.

E) Os procedimentos ou as ações de marcação e divisão de propriedades só podem ser realizados judicialmente.
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 41 usuários muito felizes estudando em nosso site.