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

时间:2014-11-22 16:54:45

标签: java swing layout-manager gridbaglayout

我正在尝试使用JTextAreaJFrame内放置GridBagLayout。我无法调整文本区域的大小,也不会根据我的gridxgridy坐标进行放置。弄清楚什么是丢失或我做错了什么有点麻烦。

我正在尝试使用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);
       } 
   }

1 个答案:

答案 0 :(得分:-3)

看到你是GUI的新手,我建议使用GUI构建器;他们使设计GUI变得更加容易和高效。这个问题列举了几个选项:

Best GUI designer for eclipse?

另外,您是否有使用GridBagLayout的原因?对于初学者来说,可能很难理解和使用。正如camickr所指出的那样,使用BorderLayout可以很好地完成工作。

根据我的个人经验,我更容易了解FlowLayout。这是所有布局中最简单的。你应该通过尝试一点来获得良好的理解。

Java教程也有很多课程;这是可能的布局管理器的可视化概述:

https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html#gridbag

这演示了如何使用FlowLayout:

https://docs.oracle.com/javase/tutorial/uiswing/layout/flow.html