我正在尝试使用JTextArea
在JFrame
内放置GridBagLayout
。我无法调整文本区域的大小,也不会根据我的gridx
和gridy
坐标进行放置。弄清楚什么是丢失或我做错了什么有点麻烦。
我正在尝试使用GUI界面构建ATM。文本区域将是我的屏幕。有点像GUI的新手,所以任何帮助将不胜感激。
代表自动柜员机
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);
}
}
答案 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