Como faço para usar GridBayLayout em Java (Swing) para gerar essa imagem em particular no meu quadro?
Basicamente, como eu gero isso? Tenho certeza que este é um trabalho paraGridBagLayout
, mas não consigo entender como dimensionar corretamente o 'Painel de Ação' versus o 'Menubar'. As linhas vermelhas e pretas indicam a grade que acredito que você deve usar neste caso (3x3), mas posso estar completamente errado e pode haver uma maneira de fazer isso em uma configuração diferente. Eu tentei mexer com oweightx
, weighty
, gridheight
, gridwidth
valores emGridBagConstraints
, mas não posso alcançar meus objetivos aqui.
Observe que a segunda linha vermelha deve ser exatamente um terço da altura da metade inferior do quadro.
Esta é a minha última tentativa, ao tentar usar uma grade de 3x6 (c é o objeto GridBagConstraints, characterPortraits contém todos os retratos e currentScreen é o 'Painel de Ação'):
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.25;
c.weighty = (1/6);
c.gridx = 0;
c.gridy = 0;
c.gridheight = 3;
pane.add(characterPortraits.get(0), c);
c.gridx = 2;
pane.add(characterPortraits.get(1), c);
c.gridx = 0;
c.gridy = 3;
c.gridheight = 3;
pane.add(characterPortraits.get(2), c);
c.gridx = 2;
pane.add(characterPortraits.get(3), c);
//c.fill = GridBagConstraints.NONE;
c.weightx = 1.0;
c.weighty = 1.0;
c.gridx = 1;
c.gridy = 0;
c.gridheight = 3;
pane.add(currentScreen, c);
Em vez disso, isso produz cada retrato no terço inferior de seu quadrante, e o Painel de Ação ocupa 5/6 da coluna central em vez de 4/6, como eu quero. Qualquer ideia ajudaria; obrigado! -B.
EDIT: Estou criando este aplicativo para ter um tamanho de janela fixo; as pessoas podem dizer que isso é um projeto ruim, mas eu estou apenas tentando entender os componentes do Swing e garantir que eles, pelo menos, se comportem em uma janela fixa do jeito que eu quero. Eu acho que posso permitir uma maximização do redimensionamento adequado, mas é sobre isso.