02 Java图形化界面设计——中间容器(Jpanel)
2024-08-24 20:35:15
上一篇讲解了Jframe顶层容器,例子中生成了一个空的窗体,在实际编程过程中,一般很少将文本框、按钮等组件直接放在顶层容器中进行布局,大多数时候是通过布局管理器结合中间容器对组件进行布局设置。
1、 将组件添加到JFrame中
方式之一:
frame.getContentPane().add(childComponent)
用getContentPane()方法获得JFrame的内容面板,再对其加入组件,一般只使用该方式添加组件。
方式之二:
把组件添加到Jpanel之类的中间容器中,用setContentPane()方法把该容器置为JFrame的内容面板:
Jpanel contentPane=new Jpanel( );
……//把其它组件添加到Jpanel中;
frame.setContentPane(contentPane);
注意:用setContentPane()方法不允许设置窗体布局,其只显示最后添加的组件,且该组件将布满整个窗口,而不管原先组件的大小设置,相当于只允许添加一次组件作为JFrame的内容面板。所以一般不实用该方法进行添加组件(可能是我不知道吧)。
2、 JPanel的使用
JPanel是Java图形化界面中最常使用的容器。
实例1:在窗体中添加一个蓝色的面板
// PanelDemo.java import javax.swing.*; import java.awt.*; //引入AWT包,因为要使用到颜色类 class PanelDemo { public static void main(String[] args) throws Exception {
JFrame f = new JFrame("第一个Java窗口"); f.setSize(300, 200); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); f.setResizable(false); f.setLocationRelativeTo(null); f.setLayout(null); // 设置窗体布局为空布局 JPanel p = new JPanel(); // 实例化一个面板 // 设置面板背景色为蓝色,如果不引入AWT包,程序将出错,可以试试看 p.setBackground(Color.BLUE); p.setSize(100, 100); // 设置面板对象大小 f.getContentPane().add(p); // 将面板添加到窗体中 // 如果使用下面添加面板的方法,面板将布满整个窗口,可以试试看 // f. setContentPane(p); } }
中间容器可以嵌套中间容器
实例2:面板的嵌套
import java.awt.*; import javax.swing.*; class TwoPanel extends JFrame { public TwoPanel(String title) { super(title); } public static void main(String args[]) { TwoPanel fr = new TwoPanel("Two Panel测试"); JPanel pan1 = new JPanel(); JPanel pan2 = new JPanel(); fr.setLayout(null); fr.getContentPane().setBackground(Color.green); // 设置窗口的颜色 fr.setSize(250, 250); pan1.setLayout(null); // 设置面板为空布局 pan1.setBackground(Color.red); pan1.setSize(150, 150); pan2.setBackground(Color.yellow); pan2.setSize(50, 50); pan1.add(pan2); // 将面板pan2添加到pan1中 // 将pan1添加到窗体中,因为pan2被添加到pan1中,所以pan1、pan2都被显示在窗体中 fr.getContentPane().add(pan1); fr.setVisible(true); fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
最新文章
- CentOS6.5 vsftpd 配置
- js自定义对象
- Scrum会议7(Beta版本)
- SQLSERER给表加自增列
- 使用 Cocos2d-x 3.1.1 创建 Windows Phone 8 游戏开发环境
- python中精确输出JSON浮点数的方法
- php 相对路径中 及 绝对路径中 的一些问题
- (转)用JS判断ckeditor3.6版本编辑器内容为空的方法
- Canvas createRadialGradient API
- IT团队之非正式沟通
- JUnit5 安装与使用
- 【很好的分享】zookeeper系列
- python 推导式
- Toggle组件切换开关,控制开关图片显示与隐藏
- Go语言从入门到放弃(一) 变量/常量/函数
- 【转】SQLyog SSH 密钥登陆认证提示: No supported authentication methods available 解决方法
- 对象new和不new的理解
- mysql重要sql小记
- 10个实用的Django建议(转)
- JavsScript 之 求时间差
热门文章
- spock spring 集成测试框架搭建心得
- Joiner的用法
- python读取文件特定的行数
- JMeter 四:建立高级web测试计划
- Unity3D调用摄像头显示当前拍摄画面
- 算法笔记_080:蓝桥杯练习 队列操作(Java)
- recess----3.Controller如何和View关联
- Wireshark-配合tcpdump对Android(安卓)手机抓包
- SQL面试题: 数据库中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列 ,当B列大于C列时选择B列否则选择C列 ,
- 动态规划初级 入门理解 C#代码