使用Java AWT组件

时间:2017-04-19 14:15:14

标签: java forms user-interface awt

我需要构建一个需要使用Canvas的用户表单,因此我不想将swing组件与AWT混合使用。

我已经经历了很多教程,似乎我错过了构建AWT框架的关键思想。

我使用GridLayout和GridBagConstraints来设置我想要组件的位置。但是,调整大小和定位似乎不起作用。我想能够有4行,顶行和底行的高度非常小,穿过整个屏幕,然后在Form中间的2x2网格中有4个大的正方形。

frame = new Frame("Test Player");   
frame.setSize(800, 800); 
frame.setLayout(new GridLayout(4, 2));

这应该给我我需要的4x2网格。然后我想在整个顶部添加一个面板。

GridBagConstraints c = new GridBagConstraints();

// Add a panel to the top of the frame
Panel controlPanel = new Panel();
controlPanel.setBackground(Color.black);
controlPanel.setBounds(0, 0, 100, 20);
c.gridx  = 0;
c.gridy = 0;
c.gridwidth = 2;
c.fill = GridBagConstraints.BOTH;
c.anchor = GridBagConstraints.FIRST_LINE_START;
frame.add(controlPanel, c);  

为什么setBounds方法没有改变我的面板的大小?

如何控制表单中组件的大小和位置?这是正确的做法,还是我使用错误的工具?

1 个答案:

答案 0 :(得分:0)

  

我需要构建一个需要使用Canvas的用户表单

为什么呢?

使用JPanel并使用Swing。您可以轻松地将组件添加到面板。它的功能与Canvas相同,但Swing比AWT更先进,功能更强。因为你刚刚学习,所以花时间学习Swing。

Swing tutorial具有所有Swing基础知识,比AWT上的任何内容都更全面。

  

为什么setBounds方法不会改变我的面板的大小?

为什么要尝试使用setBounds()?

Swing(和AWT)都使用布局管理器。

布局管理器将根据布局管理器的规则重置所有组件的大小和位置。然后,面板的大小将由添加到面板的组件确定。

本教程有一个关于How to Use a GridBagLayout的部分,其中包含可帮助您入门的工作示例。