2017-07-05 6 views
0

ボタンやパネルに問題があります。私はGridBagLayout 6x1でJPanelを作成しました。私は、彼らがサイズを固定している必要がありさえカントー、彼らはどのように多くに基づいてスペースを取ると、このパネルにボタンを追加しようとすると、JPanelのJButtonに余裕があります

 GraphicPaintedPanel deck = new GraphicPaintedPanel(); 
     GridBagLayout gblDecks = new GridBagLayout();            
     gblDecks.columnWidths = new int[]{0, 0, 0, 0, 0, 0, 0}; 
     gblDecks.rowHeights = new int[]{0, 0}; 
     gblDecks.columnWeights = new double[]{0.15, 0.15, 0.15, 0.15, 0.15, 0.15, Double.MIN_VALUE}; 
     gblDecks.rowWeights = new double[]{1.0, Double.MIN_VALUE}; 
     deck.setLayout(gblDecks); 

問題が来ます。例えば、私は4つのボタンを作成し、パネルは4ボタンと2「空のスペース」を持つことになっている

  for(int j=0; j<4; j++){ 
      JButton activate= new JButton("ACTIVATE LEADER CARD"); 
      GridBagConstraints gbcActivate = new GridBagConstraints(); 
      gbcActivate.gridx = j; 
      gbcActivate.fill = GridBagConstraints.BOTH; 
      deck.add(activate, gbcActivate); 
      } 

をすれば。しかし、代わりに、それができるすべてのスペースを取る4つのボタンがあります。私は

  for(int j=0; j<6; j++){ 
      JButton activate= new JButton("ACTIVATE LEADER CARD"); 
      GridBagConstraints gbcActivate = new GridBagConstraints(); 
      gbcActivate.gridx = j; 
      gbcActivate.fill = GridBagConstraints.BOTH; 
      deck.add(activate, gbcActivate); 
      } 

が、私はこれを取得した場合は enter image description here

ではなくenter image description here

は、寸法が固定されていないでしょうか?誰でも助けてくれますか?

+3

私は[mcve]をテストしないので、この行を削除するとどうなるか教えてください: 'gbcActivate.fill = GridBagConstraints.BOTH;'? – Frakcool

+1

@Frakcoolとはまったく同じです。 –

+1

各制約の使用方法については、[GridBagLayoutの使い方](http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html)のSwingチュートリアルのセクションを参照してください。 'FlowLayout'のような単純なレイアウトマネージャーを使うこともできます。 – camickr

答えて

1

gbcActivate.fill = GridBagConstraints.BOTH

我々はtutorialに行けば、それは言う:

は、コンポーネントの表示領域が、どのようにサイズを変更するかどうかを判断するために、コンポーネントの要求されたサイズよりも大きい場合に使用し
を埋めます成分。有効値(GridBagConstraints定数として定義されています)には、NONE(デフォルト)、HORIZONTAL(コンポーネントを表示領域を水平に塗りつぶすのに十分な幅で、高さは変更しないでください)、VERTICALその幅を変更しないでください)、とBOTH(コンポーネントが表示領域全体を満たすようにします)。

だから、それはindependtlyあなたがcolumnWeightsのために指定した内容の表示領域を埋めるだろう、など、それを削除するか、GridBagConstraints.NONE

または、上記のコメントで提案されているように、別のlayout managerなどを使用するためにそれを変更してみてくださいas FlowLayout

関連する問題