2016-02-05 30 views
2

我试图让一个JTextArea带有一个“保存”JButton在它下面居中,也许在组件之间有一点点填充以及如果可能的话框架的组件。我试图搞乱布局经理,面板等,并且似乎无法得到我想要的结果。只是寻找最简单的方法来做到这一点。谢谢。如何安排JFrame中的组件

+3

'。 “我试着布局管理器,面板等瞎搞似乎并不能得到我想要的结果”' - 始终显示你的尝试图像。 –

回答

6

建议:

  • 的GUI容器的整体布局可以的borderlayout。
  • 添加包含JTextArea BorderLayout.CENTER的JScrollPane。
  • 创建一个JPanel只是为了保存JButton,不要给它一个特定的布局管理器。它现在将使用JPanel的默认FlowLayout,并将组件置于水平方向。
  • 将您的JButton添加到最后一个JPanel。
  • 将相同的JPanel添加到BorderLayout.PAGE_END(底部)位置的GUI中。

例如:

enter image description here

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

public class SimpleLayout extends JPanel { 
    private static final int ROWS = 20; 
    private static final int COLS = 60; 
    private JTextArea textArea = new JTextArea(ROWS, COLS); 
    private JButton button = new JButton("Button"); 

    public SimpleLayout() { 
     JPanel buttonPanel = new JPanel(); 
     buttonPanel.add(button); 

     setLayout(new BorderLayout()); 
     add(new JScrollPane(textArea), BorderLayout.CENTER); 
     add(buttonPanel, BorderLayout.PAGE_END); 
    } 

    private static void createAndShowGui() { 
     SimpleLayout mainPanel = new SimpleLayout(); 

     JFrame frame = new JFrame("SimpleLayout"); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     frame.getContentPane().add(mainPanel); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(() -> { 
      createAndShowGui(); 
     }); 
    } 
} 
+0

太棒了,非常感谢你的工作。正是我在找什么。 –