Day45--panel面板
Day45--panel面板
涉及到的英语单词:
panel 面板
component 组件
组件是构成图形用户界面的基本元素。例如按钮(JButton)、文本框(JTextField)、标签(JLabel)等都是 Swing(Java 的一个 GUI 工具包)中的组件。
container 容器
容器(Container)是一种特殊的组件,它可以包含其他组件。容器为其所包含的组件提供了布局管理的功能,决定了这些组件在容器中的位置和大小排列方式。例如,常见的容器有JFrame(窗口)、JPanel(面板)等。
Frame 窗口
- 在 Java GUI 编程中,
Frame(java.awt.Frame)是一个顶层容器。它是一个带有标题栏和边框的窗口,可以包含其他 GUI 组件,如按钮、文本框、面板等组件。 - 面板不能单独存在,需要放在frame里面
示例:
创建TestPanel.java
在TestPanel里面,创建main方法,创建Frame、Panel的对象。
Frame不使用默认的布局管理器
设置frame的坐标、颜色
设置panel的坐标、颜色
frame中添加panel
可见
这里有一个有意思的地方:这里运用到了流布局
package com.liu.gui.lesson1;
import java.awt.*;
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame();
Panel panel = new Panel();
//设置布局
frame.setLayout(null);
//坐标、颜色
frame.setBounds(300,300,500,500);
frame.setBackground(new Color(36, 179, 43));
//panel设置----位置要注意,panel是放在frame里面的
panel.setBounds(50,50,400,400);
panel.setBackground(new Color(166, 82, 30));
//frame中添加panel
//frame.add()
//这里有一个很有意思的事情:查看源代码可知,panel是container的子类,container是component的子类
//frame.add(component),panel也可以放在里面
frame.add(panel);
frame.setVisible(true);
}
}
代码详细解释:
frame.setLayout(null);啥意思:
- 布局管理器概述
- 在Java的图形用户界面(GUI)编程中,布局管理器(Layout Manager)用于控制容器(如
Frame、Panel等)中组件的大小和位置。不同的布局管理器有不同的布局策略,例如FlowLayout会按照从左到右、从上到下的顺序排列组件;BorderLayout将容器分为北、南、东、西、中五个区域来放置组件等。
- 在Java的图形用户界面(GUI)编程中,布局管理器(Layout Manager)用于控制容器(如
setLayout(null)的含义- 当在
Frame(或其他容器)上调用setLayout(null)时,这意味着你将取消该容器的默认布局管理器。 - 在你的代码中,
frame.setLayout(null);表示Frame不再使用默认的布局管理器。 - 取消默认布局管理器后,你就可以通过
setBounds方法手动设置组件的位置和大小。例如,在你的代码中,后续使用了frame.setBounds(300,300,500,500);来设置Frame的位置和大小,使用panel.setBounds(50,50,400,400);来设置Panel在Frame中的位置和大小。 - 如果不调用
setLayout(null),直接使用setBounds可能不会达到预期效果,因为默认布局管理器会按照它自己的规则来管理组件的位置和大小,可能会覆盖你手动设置的位置和大小。
- 当在
总的来说,frame.setLayout(null);是为了让程序员能够完全手动地控制Frame内组件的布局。
panel的坐标是以整个电脑屏幕为坐标系,还是以所处的窗口为坐标系?
解答:1. 坐标系说明
- 在Java AWT(Abstract Window Toolkit)中,当你设置
Panel的坐标时,坐标系统是以它所在的容器(Frame)为基准的,而不是以整个电脑屏幕。
- 代码示例中的体现
- 在你的代码中,
panel.setBounds(50,50,400,400);这个操作是将Panel放置在Frame内部。这里的(50, 50)坐标是相对于Frame左上角的位置。也就是说,Panel的左上角将位于Frame左上角向右50像素、向下50像素的位置。 - 这个规则适用于大多数AWT和Swing(Swing是在AWT基础上构建的更高级的GUI库)组件。它们的位置和大小都是在其直接父容器的坐标系中进行定义的。这样可以方便地在容器内部对组件进行布局,而不用考虑屏幕的绝对位置等因素。
- 在你的代码中,

浙公网安备 33010602011771号