2016-10-23 4 views
0

JFrameのレイアウトをグリッドバッグレイアウトに設定しようとしています。私は本質的に同じサイズの4つのグリッドのように見せたいが、底部2は1つのパネルにマージされる。私はそれぞれJPanelsを追加しています。しかし、JFrameの中央に3つの小さいグリッドがあり、サイズが適切ではありません。代わりにこのように見えます。GridBagLayout非常に小さなパネルを作成する

次のように私のコードは次のとおりです。

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class Hangman extends JPanel{ 
    private String word; 
    private JPanel hA, gL, letters; 

    public void setupLayout(JFrame window){ 
      window.setLayout(new GridBagLayout()); 
      GridBagConstraints c = new GridBagConstraints(); 

      hA = new JPanel(); 
      hA.setBackground(Color.blue); 
      c.fill = GridBagConstraints.BOTH; 
      c.gridx = 0; 
      c.gridy = 0; 
      window.add(hA, c); 

      gL = new JPanel(); 
      gL.setBackground(Color.green); 
      c.fill = GridBagConstraints.BOTH; 
      c.gridx = 1; 
      c.gridy = 0; 
      window.add(gL, c); 

      letters = new JPanel(); 
      letters.setBackground(Color.black); 
      c.fill = GridBagConstraints.BOTH; 
      c.weightx = 1.0; 
      c.gridx = 0; 
      c.gridy = 1; 
      c.gridwidth = 2; 
      window.add(letters, c); 
    } 
     public void startWindow(){ 
      JFrame window = new JFrame(); 
      Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
      int screenHeight = (int) screenSize.getHeight(); 
      int windowHeight = (int) ((screenHeight/4) * 3); 
      window.setSize(windowHeight, windowHeight); 
      window.setLocationRelativeTo(null); 
      window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      setupLayout(window); 
      window.setVisible(true); 
    } 

    public void startGame(){ 
      Prep prepare = new Prep(); 
      word = prepare.findWord(true); 
      startWindow(); 
    } 

    public static void main(String[] args){ 
       Hangman start = new Hangman(); 
      start.startGame(); 
    } 
} 

準備が何をするかが非常に重要ではありません。それは単にテキストファイルからランダムな単語を取ります。レイアウトにどのような影響があるかわかりませんでした。要約すると、4つのグリッドスペースのそれぞれがウィンドウの4分の1にわたるようにして、それぞれにJPanelを追加して下の2セルをマージするようにする必要があります。どんな助けもありがとうございます。前もって感謝します。

編集: すべての重みを1に設定する必要がありました。解決されました。

答えて

2

GridBagLayoutは、各コンポーネントを望ましいサイズで表示します。パネルにコンポーネントを追加していないので、小さなパネルが表示されます。

パネルが利用可能なスペースを埋めるようにするには、制約を適用してプレイする必要があります。

詳細と動作例については、How to Use GridBagLayoutのSwingチュートリアルのセクションをお読みください。あなたは "fill"と "weightx/weighty"の制約を見たいでしょう。

、その後、下の2個の細胞はあなたも "gridwidth/gridheight" 制約を見てする必要があります

をマージします。

+0

* "編集:すべての重みを1に設定する必要がありました。解決しました。" *うーん、良いですが、質問を編集するのは間違った場所/方法です。問題を解決するのに役立ちましたら、[この回答を受け入れてください](http://meta.stackexchange.com/a/5235/155831)してください。 –

関連する問題