Pergunta

  1. É possível definir uma margem / estofamento em GridBagLayout para toda linha / coluna? Eu uso a inserção no restrições a objetos no entanto, usando essa abordagem eu preciso definir o preenchimento do fundo em cada componente.

  2. É possível pad todo o conteúdo na JFrame? Uma vez que agora a cada componente está alinhado com o quadro.

  constraints.weightx = 2;
  constraints.weighty = 1;
  constraints.fill = GridBagConstraints.BOTH;
  addComponent(this, layout, constraints, questionPanel = new QuestionPanel(), 0, 0, 1, 1);

  constraints.weightx = 1;
  constraints.weighty = 1;
  constraints.fill = GridBagConstraints.BOTH;
  addComponent(this, layout, constraints, categoryPanel = new CategoryPanel(), 0, 1, 1, 1);

  constraints.weightx = 1;
  constraints.weighty = 0;
  constraints.fill = GridBagConstraints.HORIZONTAL;
  addComponent(this, layout, constraints, answerPanel = new AnswerPanel(), 1, 0, 2, 1);

  constraints.weightx = 1;
  constraints.weighty = 2;
  constraints.fill = GridBagConstraints.BOTH;
  addComponent(this, layout, constraints, tabPane = new JTabbedPane(), 2, 0, 2, 1);

  constraints.weightx = 1;
  constraints.weighty = 0;
  constraints.fill = GridBagConstraints.NONE;
  constraints.anchor = GridBagConstraints.SOUTHEAST;
  addComponent(this, layout, constraints, buttonPanel = new ButtonPanel(), 3, 1, 1, 1);

Eu estou usando um addComponent método particular:

private void addComponent(Container context, GridBagLayout _layout, GridBagConstraints            _constraints, Component component, int row, int column, int width, int height) {
  _constraints.gridx = column;
  _constraints.gridy = row;
  _constraints.gridwidth = width;
  _constraints.gridheight = height;

  _layout.setConstraints(component, _constraints);
  context.add(component);
 }

Como posso adicionar um pouco de "ar (estofamento / margem)" entre as células?

Foi útil?

Solução

Tanto quanto eu sei, a única maneira de fazer o primeiro é para definir um objeto Insets para cada restrição ... (mão-de codificação de layout claramente não foi projetado para ser fácil em Java: P)

Mas há uma maneira muito simples de fazer o segundo, sem mexer em nenhum Insets ou qualquer coisa: definir o layout do ContentPane a um FlowLayout com qualquer vertical e lacunas horizontais desejar, adicione um painel para o ContentPane, e em vez disso de adicionar tudo para o ContentPane, adicioná-lo ao seu novo painel.

Outras dicas

Use a propriedade inset da classe GridBagConstraints

Por exemplo:

GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(3,3,3,3);

Espero que isso é o que você está procurando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top