我需要构建一个需要使用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方法没有改变我的面板的大小?
如何控制表单中组件的大小和位置?这是正确的做法,还是我使用错误的工具?
答案 0 :(得分:0)
我需要构建一个需要使用Canvas的用户表单
为什么呢?
使用JPanel并使用Swing。您可以轻松地将组件添加到面板。它的功能与Canvas相同,但Swing比AWT更先进,功能更强。因为你刚刚学习,所以花时间学习Swing。
Swing tutorial具有所有Swing基础知识,比AWT上的任何内容都更全面。
为什么setBounds方法不会改变我的面板的大小?
为什么要尝试使用setBounds()?
Swing(和AWT)都使用布局管理器。
布局管理器将根据布局管理器的规则重置所有组件的大小和位置。然后,面板的大小将由添加到面板的组件确定。
本教程有一个关于How to Use a GridBagLayout
的部分,其中包含可帮助您入门的工作示例。