2016-10-23 5 views
0

ich das Layout eines JFrame zu setzen versuchen ein GridBagLayout zu sein. Ich möchte im Wesentlichen wie 4 Gitter gleicher Größe aussehen, aber mit dem Boden 2 zu einem Panel zusammengeführt. Ich füge JPanels zu jedem hinzu. Allerdings bekomme ich 3 kleine Gitter in der Mitte des JFrame, die nicht richtig dimensioniert sind. Es sieht stattdessen so aus.GridBagLayout Schaffung sehr kleine Platten

Mein Code ist wie folgt:

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(); 
    } 
} 

Es ist nicht sehr wichtig, was Prep tut. Es braucht nur ein zufälliges Wort aus einer Textdatei. Ich konnte nicht sehen, wie es das Layout beeinflussen würde. Zur Erinnerung, ich muss es so machen, dass jeder der 4 Gitterräume ein Viertel des Fensters überspannt und dann die unteren 2 Zellen mit einem JPanel zusammenfügt, das zu jedem von ihnen hinzugefügt wird. Jede Hilfe wird geschätzt. Vielen Dank im Voraus.

EDIT: Ich brauchte das Gewicht aller von ihnen zu setzen 1. Es ist gelöst zu sein.

Antwort

2

GridBagLayout zeigt jede Komponente bei seiner bevorzugten Größe. Da Sie den Panels keine Komponenten hinzugefügt haben, sehen Sie nur ein kleines Panel.

Wenn Sie wollen, dass die Platten den Raum zu füllen Verfügung, um Sie dann müssen mit den Einschränkungen spielen.

Lesen Sie den Abschnitt aus dem Swing-Tutorial auf How to Use GridBagLayout für weitere Informationen und Arbeitsbeispiele. Sie sollten sich die "fill" und "weightx/weighty" Einschränkungen anschauen.

und dann die unteren 2-Zellen machen

fusionierte

Sie werden auch bei den „gridwidth/gridheight“ Einschränkungen aussehen müssen.

+0

* „EDIT: Ich musste das Gewicht aller von ihnen einstellen zu 1. Es ist gelöst.“ * Nun, gut, aber eine Bearbeitung auf die Frage ist die falsche Ort/Art und Weise, darüber zu berichten. Bitte [akzeptieren Sie diese Antwort] (http://meta.stackexchange.com/a/5235/155831), falls dies zur Lösung des Problems beigetragen hat. –