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

Como adicionar espaço entre o GridBagLayout do Java Swing e as bordas da janela JFrame usando o método setBorder()

Quantidade de visualizações: 11189 vezes
Se o GridBagLayout for o gerenciador de layout principal da janela, pode ser interessante adicionar algum espaço (padding) entre ele e as bordas da janela JFrame ou JDialog. Isso pode ser feito obtendo-se uma referência ao painel de conteúdo (ContentPane) da JFrame e adicionando uma borda EmptyBorder. Veja como isso é feito no trecho de código abaixo:

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

package arquivodecodigos;

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 5 pixels para os
    // lados de cima, esquerda, inferior e direita
    gbc.insets = new Insets(5, 5, 5, 5);

    // adiciona componentes à janela
    gbc.gridy = 0; // linha
    gbc.gridx = 0; // coluna
    add(new JButton("Botão 1"), gbc);

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

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

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

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

    gbc.gridy = 1; // linha
    gbc.gridx = 2; // coluna
    add(new JButton("Botão 6"), 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);
  }
}

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



Link para compartilhar na Internet ou com seus amigos:

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

Como criar uma fila em Java usando a interface Queue

Quantidade de visualizações: 1023 vezes
Uma fila é uma estrutura de dados do tipo FIFO (First-in, First-out), ou seja, o primeiro elemento a entrar é o primeiro a sair. Podemos pensar em uma estrutura de dados do tipo fila como uma fila real de um banco ou supermercado.

A linguagem Java não fornece uma classe pronta chamada Queue. Em vez disse nós temos uma interface Queue e suas implementações concretas, a saber, as classes java.util.LinkedList e java.util.PriorityQueue. É claro que existem outras implementações, mas estas duas são as que usamos com mais frequencia.

Como nesta dica a nossa intenção é representar uma fila comum, nós vamos descartar a classe PriorityQueue (fila de prioridade) e nos ater à implementação de Queue fornecida pela classe LinkedList.

Vamos começar com um exemplo bem simples. Veja um trecho de código no qual enfileiramos 5 valores inteiros em uma fila e os desenfileiramos em seguida:

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

package estudos;

import java.util.LinkedList;
import java.util.Queue;

public class Estudos{
  public static void main(String[] args){
    // vamos criar uma fila de inteiros e adicionar 5 inteiros
    Queue<Integer> fila = new LinkedList<>();
    fila.add(76);
    fila.add(80);
    fila.add(11);
    fila.add(32);
    fila.add(45);
    
    // agora vamos desenfileirar todos os elementos
    System.out.println("Ordem de remoção dos elementos da fila:");
    while(!fila.isEmpty()){
      System.out.print(fila.poll() + "  ");
    }
  }
}

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

Ordem de remoção dos elementos da fila:
76 80 11 32 45


Java ::: Estruturas de Dados ::: Árvore Binária e Árvore Binária de Busca

Estruturas de dados em Java - Como pesquisar um nó em uma árvore binária de busca usando um método recursivo usando Java

Quantidade de visualizações: 2351 vezes
Nesta dica mostraremos um exemplo completo de como pesquisar um valor em uma árvore binária de busca em Java. Note que o exemplo usa apenas inteiros, mas você não terá dificuldades para modificar a classe Nó para os dados que você precisar.

Código para No.java:

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

package arvore_binaria;

public class No {
  private int valor; // valor armazenado no nó
  private No esquerdo; // filho esquerdo
  private No direito; // filho direito
 
  // construtor do nó
  public No(int valor){
    this.valor = valor;
    this.esquerdo = null;
    this.direito = null;
  }

  public int getValor() {
    return valor;
  }

  public void setValor(int valor) {
    this.valor = valor;
  }

  public No getEsquerdo() {
    return esquerdo;
  }

  public void setEsquerdo(No esquerdo) {
    this.esquerdo = esquerdo;
  }

  public No getDireito() {
    return direito;
  }

  public void setDireito(No direito) {
    this.direito = direito;
  }
}

Código para ArvoreBinariaBusca.java:

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

package arvore_binaria;

public class ArvoreBinariaBusca {
  private No raiz; // referência para a raiz da árvore
   
  // método usado para inserir um novo nó na árvore
  // retorna true se o nó for inserido com sucesso e false
  // se o elemento
  // não puder ser inserido (no caso de já existir um 
  // elemento igual)
  public boolean inserir(int valor){
    // a árvore ainda está vazia?
    if(raiz == null){
      // vamos criar o primeiro nó e definí-lo como a raiz da árvore
      raiz = new No(valor); // cria um novo nó
    }
    else{
      // localiza o nó pai do novo nó
      No pai = null;
      No noAtual = raiz; // começa a busca pela raiz
  
      // enquanto o nó atual for diferente de null
      while(noAtual != null){
        // o valor sendo inserido é menor que o nó atual?
        if(valor < noAtual.getValor()) {
          pai = noAtual;
          // vamos inserir do lado esquerdo
          noAtual = noAtual.getEsquerdo();
        }
        // o valor sendo inserido é maior que o nó atual
        else if(valor > noAtual.getValor()){
          pai = noAtual;
          // vamos inserir do lado direito
          noAtual = noAtual.getDireito();
        }
        else{
          return false; // um nó com este valor foi encontrado
        }
      }
        
      // cria o novo nó e o adiciona como filho do nó pai
      if(valor < pai.getValor()){
         pai.setEsquerdo(new No(valor));
      }
      else{
        pai.setDireito(new No(valor));
      }
    }
 
    return true; // retorna true para indicar que o novo nó foi inserido
  }
   
  // método que permite pesquisar na árvore binária de busca
  public No pesquisar(int valor){
    return pesquisar(raiz, valor); // chama a versão recursiva do método
  }
 
  // sobrecarga do método pesquisar que recebe dois 
  // parâmetros (esta é a versão recursiva do método)
  private No pesquisar(No noAtual, int valor){
    // o valor pesquisado não foi encontrado....vamos retornar null
    if(noAtual == null){
      return null;
    }
  
    // o valor pesquisado foi encontrado?
    if(valor == noAtual.getValor()){
      return noAtual; // retorna o nó atual
    }  
    // ainda não encontramos...vamos disparar uma nova 
    // chamada para a sub-árvore da esquerda
    else if(valor < noAtual.getValor()){
      return pesquisar(noAtual.getEsquerdo(), valor);
    }
    // ainda não encontramos...vamos disparar uma nova 
    // chamada para a sub-árvore da direita
    else{
      return pesquisar(noAtual.getDireito(), valor);
    }
  }
}

E finalmente o código para a classe principal:

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

package arvore_binaria;

import java.util.Scanner;

public class ArvoreBinariaTeste {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);  
       
    // vamos criar um novo objeto da classe ArvoreBinariaBusca
    ArvoreBinariaBusca arvore = new ArvoreBinariaBusca();
    
    // vamos inserir 5 valores na árvore
    for(int i = 0; i < 5; i++){
      System.out.print("Informe um valor inteiro: ");
      int valor = Integer.parseInt(entrada.nextLine());
       
      // vamos inserir o nó e verificar o sucesso da operação
      if(!arvore.inserir(valor)){
        System.out.println("Não foi possível inserir." +
          " Um elemento já contém este valor.");  
      }
    }
     
    // vamos pesquisar um valor na árvore
    System.out.print("\nInforme o valor a ser pesquisado: ");
    int valorPesquisa = Integer.parseInt(entrada.nextLine());
    // obtém um objeto da classe NoArvore a partir do 
    // método pesquisar() da classe ArvoreBinariaBusca
    No res = arvore.pesquisar(valorPesquisa);
    // o valor foi encontrado?
    if(res != null){
      System.out.println("O valor foi encontrado na árvore");
    }
    else{
      System.out.println("O valor não foi encontrado na árvore");  
    }
     
    System.out.println("\n");
  }
}



Java ::: Desafios e Lista de Exercícios Resolvidos ::: Física - Mecânica - Movimento Retilíneo Uniforme (MRU)

Exercícios Resolvidos de Física usando Java - Dois automóveis, A e B, movem-se em movimento uniforme e no mesmo sentido. Suas velocidades escalares têm módulos respectivamente iguais a...

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

Dois automóveis, A e B, movem-se em movimento uniforme e no mesmo sentido. Suas velocidades escalares têm módulos respectivamente iguais a 15 m/s e 10 m/s. No instante t = 0, os automóveis encontram-se nas posições indicadas abaixo:



Determine:

a) o instante em que A alcança B;
b) a que distância da posição inicial de A ocorre o encontro.

Resposta/Solução:

Este é um dos exemplos clássicos que encontramos nos livros de Física Mecânica, nos capítulos dedicados ao Movimento Retilíneo Uniforme (MRU). Em geral, tais exemplos são vistos como parte dos estudos de encontro e ultrapassagem de partículas.

Por se tratar de Movimento Retilíneo Uniforme (MRU), as grandezas envolvidas nesse problema são: posição (deslocamento), velocidade e tempo. Assim, já sabemos de antemão que o veículo B está 100 metros à frente do veículo A. Podemos então começar calculando a posição atual na qual cada um dos veículos se encontra. Isso é feito por meio da Função Horária da Posição ou Deslocamento em Movimento Retilíneo Uniforme - MRU.

Veja o código Java que nos retorna a posição inicial (em metros) dos dois veículos:

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

package arquivodecodigos;

public class Estudos{
  public static void main(String args[]){
    // valocidade do veículo A
    double vA = 15; // em metros por segundo    
    // valocidade do veículo B
    double vB = 10; // em metros por segundo
    
    // posição inicial dos dois veículos
    double sInicialA = 0;
    double sInicialB = 100;
    
    // tempo inicial em segundos
    double tempo_inicial = 0;
    
    // calcula a posição atual dos dois veículos
    double sA = sInicialA + (vA * tempo_inicial);
    double sB = sInicialB + (vB * tempo_inicial);
    
    // mostra os resultados
    System.out.println("A posição do veículo A é: " + sA + " metros");
    System.out.println("A posição do veículo B é: " + sB + " metros");
  }
} 

Ao executar esta primeira parte do código Java nós teremos o seguinte resultado:

A posição do veículo A é: 0.0 metros
A posição do veículo B é: 100.0 metros

Agora que já temos o código que calcula a posição de cada veículo, já podemos calcular o tempo no qual o veículo A alcança o veículo B. Para isso vamos pensar direito. Se o veículo A vai alcançar o veículo B, então já sabemos que a velocidade do veículo A é maior que a velocidade do veículo B.

Sabemos também que a posição do veículo B é maior que a posição do veículo A. Só temos que aplicar a fórmula do tempo, que é a variação da posição dividida pela variação da velocidade. Veja o código Java que efetua este cálculo:

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

package arquivodecodigos;

public class Estudos{
  public static void main(String args[]){
    // valocidade do veículo A
    double vA = 15; // em metros por segundo    
    // valocidade do veículo B
    double vB = 10; // em metros por segundo
    
    // posição inicial dos dois veículos
    double sInicialA = 0;
    double sInicialB = 100;
    
    // tempo inicial em segundos
    double tempo_inicial = 0;
    
    // calcula a posição atual dos dois veículos
    double sA = sInicialA + (vA * tempo_inicial);
    double sB = sInicialB + (vB * tempo_inicial);
    
    // calculamos o tempo no qual o veículo A alcança o veículo B
    double tempo = (sB - sA) / (vA - vB);
    
    // mostra os resultados
    System.out.println("A posição do veículo A é: " + sA + " metros");
    System.out.println("A posição do veículo B é: " + sB + " metros");
    System.out.println("O veículo A alcança o veículo B em " + tempo + 
      " segundos");
  }
} 

Ao executar esta modificação do código Java nós teremos o seguinte resultado:

A posição do veículo A é: 0.0 metros
A posição do veículo B é: 100.0 metros
O veículo A alcança o veículo B em 20.0 segundos

O item b pede para indicarmos a que distância da posição inicial de A ocorre o encontro entre os dois veículos. Agora que já sabemos o tempo do encontro, fica muito fácil. Basta multiplicarmos a velocidade do veículo A pelo tempo do encontro. Veja:

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

package arquivodecodigos;

public class Estudos{
  public static void main(String args[]){
    // valocidade do veículo A
    double vA = 15; // em metros por segundo    
    // valocidade do veículo B
    double vB = 10; // em metros por segundo
    
    // posição inicial dos dois veículos
    double sInicialA = 0;
    double sInicialB = 100;
    
    // tempo inicial em segundos
    double tempo_inicial = 0;
    
    // calcula a posição atual dos dois veículos
    double sA = sInicialA + (vA * tempo_inicial);
    double sB = sInicialB + (vB * tempo_inicial);
    
    // calculamos o tempo no qual o veículo A alcança o veículo B
    double tempo = (sB - sA) / (vA - vB);
    
    // a que distância da posição inicial de A ocorre o encontro
    double distancia_encontro = vA * tempo;
    
    // mostra os resultados
    System.out.println("A posição do veículo A é: " + sA + " metros");
    System.out.println("A posição do veículo B é: " + sB + " metros");
    System.out.println("O veículo A alcança o veículo B em " + tempo + 
      " segundos");
    System.out.println("O encontro ocorreu a " + distancia_encontro + 
      " metros da distância inicial do veículo A");
  }
} 

Agora o código Java completo nos mostra o seguinte resultado:

A posição do veículo A é: 0.0 metros
A posição do veículo B é: 100.0 metros
O veículo A alcança o veículo B em 20.0 segundos
O encontro ocorreu a 300.0 metros da distância inicial do veículo A

Para demonstrar a importância de se saber calcular a Função Horária da Posição ou Deslocamento em Movimento Retilíneo Uniforme (MRU), experimente indicar que o veículo A saiu da posição 20 metros, e defina a posição inicial do veículo B para 120 metros, de modo que ainda conservem a distância de 100 metros entre eles.

Você verá que o tempo do encontro e a distância do encontro em relação à posição inicial do veículo A continuam os mesmos. Agora experimente mais alterações nas posições iniciais, na distância e também nas velocidades dos dois veículos para entender melhor os conceitos que envolvem o Movimento Retilíneo Uniforme (MRU).


Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Fenômeno de Transportes

De uma grande barragem, parte uma canalização de 250mm de diâmetro, de onde a água passa para a atmosfera sob a forma de jato. A vazão deste jato é 360L/s. Calcular a velocidade Vj do jato e a altura (H) na barragem. Considere que não há perda de energia no processo e que a velocidade de decaimento do nível da barragem é nula.



A) Vj = 7,33m/s e H = 2,74m.

B) Vj = 1,83m/s e H = 0,17m.

C) Vj = 2,46m/s e H = 0,31m.

D) Vj = 7,33m/s e H = 0,37m,

E) Vj =7,33 X 10-3m/s e H = 2,74 X 10-6m.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

Qual dessas coleções Python é ordenada, mutável (permite mudanças) e permite duplicação de itens?

A) Dictionary

B) Tuple

C) List

D) Set

E) Nenhuma das opções anteriores
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira

Ações em estruturas: apresentação dos principais carregamentos na análise de estruturas convencionais

Um gerador industrial movido a gás natural, colocado na laje de cobertura de um prédio, apresentou defeito em um dos cilindros. Foi contratada uma empresa para prestar manutenção no gerador. A equipe da manutenção é formada por três pessoas, que carregam consigo cerca de 100 kg em equipamentos. Tendo em vista a descrição acima feita, a equipe e os equipamentos podem ser enquadrados em que classificação de carregamento?

A) Ação permanente direta.

B) Ação excepcional.

C) Ação acidental direta.

D) Ação permanente indireta.

E) Ação acidental indireta.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em

Dimensionamento de lajes maciças à flexão

As lajes maciças são armadas em cruz, quando apresentam a relação entre o maior e o menor vão inferior a 2. Nessas situações, a laje pode ser dimensionada a partir de valores preestabelecidos em tabelas como a de Marcus.

Considere a laje maciça armada em cruz apresentada na figura a seguir:



Dados:

Peso específico do concreto = 25kN/m3
Carga do contrapiso + revestimento = 2,00kN/m2
Carga acidental = 2,50kN/m2
Altura da laje (h) = 10cm
Altura útil (d) = 6cm
Cobrimento nominal = 2,5cm
fcd = fck / 1,4 (considerar concreto de 20MPa)
fyd = fyk / 1,15 (considerar aço CA-50)

Assinale a alternativa correta:

A) A altura de 10cm não é suficiente para resistir ao momento máximo atuante, devendo ser empregada, pelo menos, uma altura de 11cm na laje em questão.

B) A altura de 10cm não é suficiente para resistir ao momento máximo atuante, devendo ser empregada, pelo menos, uma altura de 12cm na laje.

C) A altura de 10cm não é suficiente para resistir ao momento máximo atuante, devendo ser empregada, pelo menos, uma altura de 13cm na laje.

D) A altura de 10cm não é suficiente para resistir ao momento máximo atuante, devendo ser empregada, pelo menos, uma altura de 14cm na laje.

E) A altura de 10cm não é suficiente para resistir ao momento máximo atuante, devendo ser empregada, pelo menos, uma altura de 15cm na laje.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Fenômeno de Transportes

De uma grande barragem, parte uma canalização de 250mm de diâmetro, de onde a água passa para a atmosfera sob a forma de jato. A vazão deste jato é 360L/s. Calcular a velocidade Vj do jato e a altura (H) na barragem. Considere que não há perda de energia no processo e que a velocidade de decaimento do nível da barragem é nula.



A) Vj = 7,33m/s e H = 2,74m.

B) Vj = 1,83m/s e H = 0,17m.

C) Vj = 2,46m/s e H = 0,31m.

D) Vj = 7,33m/s e H = 0,37m,

E) Vj =7,33 X 10-3m/s e H = 2,74 X 10-6m.
Verificar Resposta Estudar Cards Todas as Questões

Mais Desafios de Programação e 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á 29 usuários muito felizes estudando em nosso site.