Pergunta
Existe uma maneira de adicionar elementos a um GridLayout que lhes acrescenta horizontalmente em vez de verticalmente? Basicamente eu quero preencher uma linha inteira com elementos antes de começar com o próximo.
Hope eu fiz a minha pergunta clara.
Solução
Eu sugeriria GridBagLayout GridBagConstraints
É muito parecido com um GridLayout, mas com GridBagConstraints você pode especificar as coordenadas x e y do componente, e você pode fazer colunas e linhas vãos.
Seria algo parecido com isto:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
GridBagLayout layout = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
JPanel panel = new JPanel();
JLabel label = new JLabel("foo");
panel.setLayout(layout);
c.gridx = 0;
c.gridy = 0;
panel.add(label, c);
Outras dicas
Isso é como GridLayout funciona .
O GridLayout, como o nome sugere estabelece componentes de acordo com o número de colunas e linhas que especificado no construtor , e vai passar para a próxima linha, assim que você adicionou o número especificado de componentes.
Desde a sua pergunta, parece que um FlowLayout é mais ao longo das linhas do que você está procurando.
Editar :. Eu não sei por que, mas se você especificar o número de linhas como 0 (por exemplo new GridLayout(0, 9)
, parece funcionar adequadamente
Na verdade, você deve usar GroupLayout é novo (desde JDK 1.6) e bastante impressionante. Dá-lhe uma tonelada de flexibilidade no layout.
Eu suponho que você quis dizer que você quer encher todas as linhas em uma coluna antes de passar para a próxima coluna. Se assim for, então usar um gerenciador de layout personalizado