Layout Manager. Parte VII – MigLayout.

Depois de um bom tempo sem posts, estou aqui para ressuscitar o blog com mais um artigo sobre layout managers.

Até agora eu falei um pouco sobre os gerenciadores de layout oferecidos pela API Java, mas desta vez mostrarei alguns exemplos usando MigLayout, um layout manager extremamente versátil e, mesmo assim, simples de se utilizar.

O que é preciso para utilizar o MigLayout?

Para poder utilizá-lo, é preciso fazer o download do pacote “jar” (neste post estou utilizando a versão miglayout-3.7.4-swing.jar) disponível em www.miglayout.com e adicioná-lo ao classpath de sua aplicação.

Obs.: O pacote “miglayout-<versão>-swing.jar” é uma versão “enxuta” que possui apenas as classes necessárias para que possamos utilizar o MigLayout com Swing, mas caso queiram usar o pacote completo (miglayout-<versão>.jar) para acompanhar os exemplos deste post, não haverá problema algum.
Continuar lendo

Layout Manager. Parte VI – CardLayout.

Como havia adiantado no último post, desta vez irei falar um pouco sobre CardLayout, um gerenciador que permite que os componentes (geralmente paineis) compartilhem a mesma área de um container.

Para o CardLayout, os componentes adicionados ao container são chamados de cards, pois são empilhados como se fossem cartas de um baralho, e são exibidos um de cada vez. Para definir qual dos cards deve ser exibido, a classe CardLayout oferece alguns métodos de navegação:

Continuar lendo

Layout Manager. Parte V – GridBagLayout.

Desta vez irei apresentar o GridBagLayout, que é um dos mais flexíveis gerenciadores de layout. Assim como o GridLayout, ele forma um grid na tela, porém suas células não precisam ter necessariamente o mesmo tamanho, os componentes podem ocupar mais de uma célula e o redimensionamento é opcional.

Para cada componente que adicionamos ao container, temos que passar um objeto da classe GridBagConstraints, que define como o componente deve se comportar dentro do grid.
Continuar lendo

XNA: Teclado e movimento

Olá, caros leitores, vamos continuar aqui nossa série sobre XNA. Como o título sugere, hoje veremos um pouco de como manipular o dispositivo de entrada padrão, o teclado, para executar ações em nossos games, como por exemplo o movimento dos personagens.

Recomendo que se você for acompanhar post a post, como um tutorial, salve o projeto para abri-lo e continuá-lo a cada novo post. Nesse segundo post, vou partir do que tínhamos ao final do primeiro. Nossa classe principal, Game1, estava assim:

Continuar lendo

Iniciando com XNA

Caros leitores, quebrando um pouco a rotina do nosso blog, que até hoje veio trazendo dicas muito úteis sobre desenvolvimento desktop com Java, postadas pelo parceiro Eric, começo com este post uma nova “série” no DevSV: desenvolvimento de games com o XNA Framework.

Dando uma pequena introdução para quem pegou o bonde andando, XNA Framework é uma série de bibliotecas para a plataforma .Net da Microsoft, voltada a facilitar a criação de games, tanto para PCs rodando Windows quanto para o console da Microsoft, XBOX 360.

Nesse e nos próximos posts darei dicas de como aproveitar as potencialidades dessas bibliotecas para criar os mais variados tipos de games, para quem já conhece a linguagem C#. Mas não se preocupe, os posts de Java desktop continuarão.

Continuar lendo

Layout Manager. Parte III – BorderLayout.

No último post apresentei alguns exemplos de posicionamento usando FlowLayout. Agora partiremos para o BorderLayout, que é o gerenciador padrão da classe JFrame.

O BorderLayout é capaz de posicionar até cinco componentes em posições específicas do container. Cada posição é representada por uma das constantes definidas na classe BorderLayout, sendo elas:

  • CENTER: Posiciona o componente na área central do container. O componente é redimensionado para ocupar toda a área livre. Se nenhum posicionamento for especificado, este é adotado como padrão;
  • NORTH: Posiciona o componente na área superior (norte) do container. A altura do componente é respeitada, mas a largura é redimensionada para ocupar todo o espaço horizontal;
  • SOUTH: Posiciona o componente na área inferior (sul) do container. Assim como acontece com o componente da posição NORTH, a altura do componente é respeitada, mas sua largura é redimensionada para ocupar todo o espaço horizontal;
  • WEST: Posiciona o componente na parte esquerda (oeste) do container. Para este caso a largura do componente é respeitada, porém a altura é redimensionada para ocupar todo o espaço vertical;
  • EAST: Posiciona o componente na parte direita (leste) do container. O redimensionamento ocorre de maneira semelhante ao redimensionamento da posição WEST

Obs.: As constantes apresentadas definem posicionamento absoluto. Mas também existem algumas constantes para posicionamento relativo à orientação dos componentes, são elas PAGE_START, PAGE_END, LINE_START e LINE_END.
Continuar lendo

Layout Manager. Parte II – FlowLayout.

Olá, neste segundo post sobre layout managers apresentarei alguns exemplos de utilização do FlowLayout, que é o gerenciador utilizado por padrão pela classe JPanel. Sua função é posicionar os componentes um ao lado do outro, formando uma linha. Este gerenciador respeita o tamanho (preferred size) dos componentes e, quando não houver espaço para alocar mais componentes em uma linha, o próprio layout manager se encarrega de posicioná-los na linha seguinte.
Continuar lendo

Layout Manager. Parte I – Null Layout.

Uma das preocupações de quem monta interfaces gráficas para desktop utilizando Swing é deixar os componentes bem organizados na tela, mas esta nem sempre é uma tarefa simples. Para auxiliar na manutenção correta dos componentes na tela, a API oferece um conjunto de classes chamadas de gerenciadores de layout (layout managers).

A tarefa destes gerenciadores é organizar o posicionamento e redimensionamento dos componentes, permitindo que as telas criadas se adaptem as diversas resoluções de monitor e LookAndFeel’s que a aplicação possa utilizar.

Para quem está começando a criar interfaces com Swing, setar o layout como null e posicionar os componentes com valores absolutos parece a solução mais simples. Mas neste post mostrarei algumas desvantagens de se fazer isto.
Continuar lendo