2016-04-05 18 views
0

Ich möchte ein GridLayout mit 4 Schaltflächen in der Mitte meines Layouts und eine Schaltfläche zu PAGE_END, PAGE_START, LINE_END, LINE_START erstellen. Mein Code zeigt die letzten Tasten, die ich Ihnen gesagt habe, aber nicht die Grid-Tasten.Hinzufügen eines GridLayout (2,2) in CENTER

public static void main(String[] args) { 
    JFrame frame = new JFrame(); 
    frame.setTitle("Hello World!"); 
    frame.setSize(400,200); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 

    JPanel p = new JPanel(new BorderLayout()); 

    GridLayout grid = new GridLayout(2,2); 
    p.setLayout(new GridBagLayout()); 
    GridBagConstraints c = new GridBagConstraints(); 

    JButton bg1 = new JButton("Button 1"); 
    p.add(bg1, c); 
    JButton bg2 = new JButton("Button 2"); 
    p.add(bg2, c); 
    JButton bg3 = new JButton("Button 3"); 
    p.add(bg3, c); 
    JButton bg4 = new JButton("Button 4"); 
    p.add(bg4, c); 

    frame.setLayout(new BorderLayout());   

    JButton b1 = new JButton("TOP"); 
    JButton b2 = new JButton("LEFT"); 
    JButton b3 = new JButton("RIGHT"); 
    JButton b4 = new JButton("BOTTOM");  

    frame.add(b1,BorderLayout.PAGE_START); 
    frame.add(b2,BorderLayout.LINE_START); 
    frame.add(b3,BorderLayout.LINE_END); 
    frame.add(b4,BorderLayout.PAGE_END); 
    }  
} 

Antwort

0

Sie haben das Panel p erstellt, aber Sie haben es nicht an den Rahmen hinzugefügt.

Fügen Sie diese Zeile im Code:

frame.add(p,BorderLayout.CENTER); 

Außerdem müssen Sie diese Zeile verwenden, wenn Sie die Tasten in einem Raster wollen:

p.setLayout(grid); 

statt p.setLayout(new GridBagLayout());

+0

Zunächst Danke für die Hilfe. Ich habe diese Zeile hinzugefügt, aber die Grid-Schaltflächen/das Panel werden immer noch nicht angezeigt. Ich fügte auch 'p.setVisible (true);' hinzu, aber immer noch nicht funktioniert. –

+0

@ iraklis.s Wo haben Sie diese Zeile hinzugefügt? – Hackerdarshi

+0

'JPanel p = neues JPanel (neues BorderLayout()); frame.add (p, BorderLayout.CENTER); p.setVisible (true); ' –

Verwandte Themen