2016-04-24 8 views
1

Ich versuche, Komponenten zu SOUTH eines BorderLayout hinzufügen Ich brauche es wie dieses Beispiel aussehen.Java Ausrichten von Komponenten in Panels

Also brauche ich ein JTextField und ein JButton nach links ausgerichtet, und ein Label nach rechts ausgerichtet. Wie kann ich das erreichen? Hier ist mein Code unten, ich habe versucht, dies mit verschachtelten Platten zu tun:

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

public class BlackjackGUI{ 

    private JFrame frame; 
    private JPanel panel, panelLeft, panelBottomLeft, panelBottomRight; 
    private JButton newGameBtn, dealBtn, hitBtn, standBtn; 
    private JLabel placeBetLbl, playerMoneyLbl; 
    private JLabel playerCard1Lbl, playerCard2Lbl, playerCard3Lbl, 
        playerCard4Lbl, playerCard5Lbl, playerCard6Lbl, playerCard7Lbl; 
    private JLabel dealerCard1Lbl, dealerCard2Lbl, dealerCard3Lbl, dealerCard4Lbl, 
        dealerCard5Lbl, dealerCard6Lbl, dealerCard7Lbl; 
    private JLabel playerCardValueLbl, dealerCardValueLbl; 
    private JLabel spacer1, spacer2; 
    private JTextField betInputBox; 

    public BlackjackGUI(){ 
     createForm(); 

     addTextField(); 
     addButtons(); 
     addLabels(); 


     frame.add(panel); 
     frame.setVisible(true); 
    } 

    public void createForm() { 
     frame = new JFrame("Blackjack"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(1200,800); 

     panel = new JPanel(); 
     panel.setLayout(new BorderLayout()); 
     Color c = new Color(0, 100, 0); 
     panel.setBackground(c); 


     panelLeft = new JPanel(); 
     Color panelLeftBG = new Color (23, 25, 100); 
     panelLeft.setBackground(panelLeftBG); 
     panel.add(panelLeft, BorderLayout.WEST); 

     panelBottomLeft = new JPanel(); 
     Color panelBottomLeftBG = new Color (56, 12, 10); 
     panelBottomLeft.setBackground(panelBottomLeftBG); 
     panelBottomLeft.setLayout(new FlowLayout(FlowLayout.LEFT)); 
     panel.add(panelBottomLeft, BorderLayout.SOUTH); 

     panelBottomRight = new JPanel(); 
     Color panelBottomRightBG = new Color (12, 88, 40); 
     panelBottomRight.setBackground(panelBottomRightBG); 
     panelBottomRight.setLayout(new FlowLayout(FlowLayout.RIGHT)); 
     panel.add(panelBottomRight, BorderLayout.SOUTH); 
    } 

    public void addButtons() { 

     newGameBtn = new JButton("New Game"); 
     panelLeft.add(newGameBtn, BorderLayout.WEST); 
     newGameBtn.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent event) { 
       System.exit(0); 

      } 
     }); 

     dealBtn = new JButton("Deal"); 
     dealBtn.setPreferredSize(new Dimension (100, 50)); 
     panelBottomLeft.add(dealBtn); 
     newGameBtn.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent event) { 
       System.exit(0); 

      } 
     }); 

    } 

    public void addTextField() { 

     betInputBox = new JTextField(); 
     betInputBox.setPreferredSize(new Dimension(175,50)); 
     panelBottomLeft.add(betInputBox); 
    } 

    public void addLabels() { 

     placeBetLbl = new JLabel("Place your bets!"); 
     placeBetLbl.setFont(new Font("Gill Sans MT", Font.PLAIN, 35)); 
     panelBottomLeft.add(placeBetLbl); 

     playerMoneyLbl = new JLabel("£2,500"); 
     playerMoneyLbl.setFont(new Font("Gill Sans MT", Font.PLAIN, 35)); 
     playerMoneyLbl.setLayout(new FlowLayout(FlowLayout.RIGHT)); 
     panelBottomRight.add(playerMoneyLbl); 

    } 

    public static void main(String[] args) { 
    new BlackjackGUI(); 

    } 

} 
+0

Nur ein freundlicher Tipp, Sie könnten es uns viel einfacher machen, wenn Sie ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) bereitstellen könnten. Besonders im Bezug auf den minimalen Teil. Versuchen Sie, den Code herauszunehmen, der nicht notwendig ist, um das Problem zu demonstrieren, das Sie haben. –

Antwort

0

Eine Möglichkeit ist, ein horizontales Box Layout auf der Platte zu verwenden. Dann können Sie glue verwenden, um die Gruppen von Komponenten zu trennen:

JPanel panel = new JPanel(); 
panel.setLayout(...); 
panel.add(textField); 
panel.add(button); 
panel.add(the glue here); 
panel.add(label); 

Lesen Sie den Abschnitt aus den Swing-Tutorial auf How to Use BoxLayout für weitere Informationen über die glue und Arbeitsbeispiele.