Java GridBagLayout没有将我的JTextArea定位到我想要的位置

Java GridBagLayout没有将我的JTextArea定位到我想要的位置,java,swing,layout-manager,gridbaglayout,Java,Swing,Layout Manager,Gridbaglayout,我试图使用GridBagLayout在JFrame内部放置一个JTextArea。我无法调整文本区域的大小,也无法根据我的gridx和gridy坐标放置文本区域。在找出遗漏了什么或我做错了什么方面有点困难 我正在尝试用GUI界面构建ATM。文本区域将成为我的屏幕。对GUI来说有点陌生,所以任何帮助都将不胜感激 ATM.java 表示自动取款机 import java.awt.Color; import javax.swing.JFrame; import java.awt

我试图使用GridBagLayout在JFrame内部放置一个JTextArea。我无法调整文本区域的大小,也无法根据我的gridx和gridy坐标放置文本区域。在找出遗漏了什么或我做错了什么方面有点困难

我正在尝试用GUI界面构建ATM。文本区域将成为我的屏幕。对GUI来说有点陌生,所以任何帮助都将不胜感激

ATM.java 表示自动取款机

    import java.awt.Color;
    import javax.swing.JFrame;
    import java.awt.FlowLayout;
    import java.awt.BorderLayout;
    import java.awt.GridBagLayout;
    import java.awt.GridBagConstraints;
    import java.awt.Component;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.JLabel;
    import javax.swing.JTextArea;
    import javax.swing.JButton;
    import java.awt.Container;

    //import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    public class ATM  extends JFrame 
    {  
        private JFrame atmContainer;
        private GridBagConstraints constraints;
        private GridBagLayout layout;
        private JTextArea atmScreen;
        private Container container;
        // constants corresponding to main menu options
        /*private static final int BALANCE_INQUIRY = 1;
        private static final int WITHDRAWAL = 2;
        private static final int DEPOSIT = 3;
        private static final int EXIT = 4;*/

        // no-argument ATM constructor initializes instance variables
        public ATM() 
        {
          atmContainer = new JFrame("ATM");
          atmScreen = new JTextArea(5,15);
          atmContainer.setLayout(new GridBagLayout());
          constraints = new GridBagConstraints();
          atmContainer.setSize(600, 400);
          atmContainer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //completely closes the      program
       
       
          atmScreen.setText("Welcome user");
          atmScreen.setEnabled(false);
          // atmScreen.setSize(100,100);
          constraints.gridx = 1;
          constraints.gridy = 0;
          atmContainer.add(atmScreen, constraints);
        
          atmContainer.setVisible(true); //makes atm visible
          atmContainer.setLocationRelativeTo(null);
       } 
   }

鉴于您是GUI新手,我建议使用GUI生成器;它们使GUI的设计变得相当简单和高效。这个问题列举了几个选项:

另外,您使用GridBagLayout有什么原因吗?对于初学者来说,这可能是一个难以理解和使用的问题。正如camickr所指出的,使用BorderLayout可以很好地完成这项工作

从我个人的经验来看,首先了解FlowLayout对我来说比较容易。它是所有布局中最简单的。你应该通过做一点实验来获得很好的理解

Java教程也有丰富的课程;这是可能的布局管理器的直观概述:

这演示了如何使用FlowLayout:


不使用GridBagLayout,你将拯救自己的世界。jTextArea将成为我的屏幕。-然后只需使用BorderLayout,这是框架的默认布局管理器。然后,只需将文本区域添加到框架中,它就会占用框架的所有可用空间。原因是您不了解布局管理器是如何工作的。最好的办法是通过阅读来研究什么是布局管理器以及它们是如何工作的,然后根据需要选择合适的布局管理器。在此之后,如果您认为没有任何布局管理器适合您必须执行的操作,则必须做出以下选择:1创建自己的布局管理器,或2使用。@hfontanez绝对定位非常不受鼓励。总有比手动操作更好的LayoutManager。在一些非常罕见的情况下,可能会实现自定义LayoutManager。请提供GUI布局的ASCII艺术或简单绘图。鉴于您是GUI新手,我建议您使用GUI生成器,这是有史以来最糟糕的建议。创建最难看的代码和UI的最佳方法,而不是学习GUI的实际工作方式。