2016-04-13 10 views
0

Ich habe früher am Tag eine andere JFrame-Frage gestellt und konnte mein Problem lösen, aber jetzt habe ich einen weiteren Haken gefunden. Ich brauche meine Benutzeroberfläche wie die abgebildete, aber ich kann nicht herausfinden, wie man sie mithilfe eines LayoutManagers übereinander stapeln kann. Wenn BorderLayout South auf beiden verwendet wird, wird nur der zuletzt hinzugefügte angezeigt. Irgendwelche Tipps?Verwenden von JFrame und Ausrichtung

Heres, wie es aussehen sollte: enter image description here

Und hier ist mein Code:

JFrame frame = new JFrame(); 
    JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0)); 
    JPanel textPanel = new JPanel(); 

    textPanel.setLayout(new BoxLayout(textPanel, BoxLayout.X_AXIS)); 

    JTextField textField = new JTextField(); 
    textField.setMaximumSize((new Dimension(10000,25))); 

    textPanel.add(new JLabel("Filename:")); 
    textPanel.add(textField); 
    textPanel.add(new JButton("Load")); 

    frame.add(textPanel); 

    buttonPanel.add(new JButton("Play")); 
    buttonPanel.add(new JButton("Stop")); 


    frame.add(buttonPanel, BorderLayout.SOUTH); 

    frame.setSize(500, 300); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    frame.setVisible(true); 
+0

Compound-Komponenten neigen dazu, der Weg zu sein – MadProgrammer

Antwort

1

Nutzen Sie einen anderen Behälter die textPane zu setzen und buttonPane in

Compound Panels

import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.GridLayout; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class Test { 

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

    public Test() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
        ex.printStackTrace(); 
       } 

       JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.add(new TestPane()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class TestPane extends JPanel { 

     public TestPane() { 
      setLayout(new BorderLayout()); 

      JPanel textPane = new JPanel(new GridBagLayout()); 
      JTextField textField = new JTextField(20); 

      textPane.add(new JLabel("Filename:")); 
      GridBagConstraints gbc = new GridBagConstraints(); 
      gbc.weightx = 1; 
      gbc.fill = GridBagConstraints.HORIZONTAL; 
      textPane.add(textField, gbc); 
      textPane.add(new JButton("Load")); 

      JPanel buttonPane = new JPanel(); 
      buttonPane.add(new JButton("Play")); 
      buttonPane.add(new JButton("Stop")); 

      JPanel southPane = new JPanel(new GridLayout(2, 0)); 
      southPane.add(textPane); 
      southPane.add(buttonPane); 

      add(new JLabel("I'm in the center")); 
      add(southPane, BorderLayout.SOUTH); 
     } 

    } 

} 
Verwandte Themen