Java开发GUI之CardLayout卡片布局

Java开发GUI之CardLayout卡片布局

    CardLayout布局允许进行多套界面的设计,通过切换界面来实现布局样式的改变。CardLayout类似与一叠卡片,默认最先添加的在前面,界面始终只展示一个卡片。示例如下:

	static Panel cardPannel;
	
	static void CardLayoutTest(){
		Frame frame = new Frame("Label");
		Panel top = new Panel();
		Choice choice = new Choice();
		choice.add("BUTTON");
		choice.add("LABEL");
		choice.addItemListener(new CardLayoutChoiceListener());
		top.add(choice);
		
		CardLayout layout = new CardLayout();
		cardPannel = new Panel(layout);
		Panel p1 = new Panel();
		p1.add(new Button("one"));
		p1.add(new Button("two"));
		p1.add(new Button("three"));
		cardPannel.add("BUTTON", p1);
		Panel p2 = new Panel();
		p2.add(new Label("label"));
		p2.add(new Label("label"));
		p2.add(new Label("label"));
		cardPannel.add("LABEL", p2);
		top.add(cardPannel);
		
		frame.add(top);
		frame.pack();
		frame.show();
	}

Choice的监听对象类如下:

class CardLayoutChoiceListener implements ItemListener{

	@Override
	public void itemStateChanged(ItemEvent e) {
		// TODO Auto-generated method stub
		((CardLayout)APP.cardPannel.getLayout()).show(APP.cardPannel, (String) e.getItem());
	}
	
}

需要注意,CardLayout在进行卡片切换时,是通过卡片名来确定的,所以上面的代码将Choice的标题设置为和卡片的名称一致。

    CardLayout类中方法总结如下:

//默认的构造方法
public CardLayout();
//构造方法 hgap设置卡片水平间距 vgap设置卡片竖直间距 
public CardLayout(int hgap, int vgap);
//获取水平间距
public int getHgap();
//设置水平间距
public void setHgap(int hgap);
//获取竖直间距
public int getVgap();
//设置竖直间距
public void setVgap(int vgap);
//显示第一个卡片界面 parent为父容器
public void first(Container parent);
//显示下一个卡片界面
public void next(Container parent);
//显示上一个卡片界面
public void previous(Container parent);
//显示最后一个卡片界面
public void last(Container parent);
//显示指定名称的卡片界面
public void show(Container parent, String name);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐百川的学习频道

用WPF做一个简易浏览器

微软的WPF(Windows Presentation Foundation)是目前Windows平台上最好用的图形界面框架了。如果想在Windows平台上编写...

37550
来自专栏谦谦君子修罗刀

RN手势

React Native框架底层的手势响应系统提供了响应处理器,PanResponder API将这些手势响应处理器再次进行封装,便于开发者对手势进行处理。 ...

354120
来自专栏前端说吧

canvas - drawImage()方法绘制图片不显示的问题

事情是这样的,在我看完w3c的介绍和很有说服力和教学力的demo后,本着实践出真知的思想决定上手一试,这一试不要紧~

53720
来自专栏更流畅、简洁的软件开发方式

能自己“跑”的表单控件,思路,雏形,源码。vs2005版本

下载地址:  http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html 大家是怎么处理CRUD的呢?...

20790
来自专栏前端知识分享

第140天:前端开发中浏览器兼容性问题总结(一)

我们在开发的时候会明确项目要兼容哪些浏览器的最低版本,我之前的项目要求兼容IE8.0以上的版本,Chrome 48以上,FireFox 44以上。有了这些最基本...

1.9K30
来自专栏云瓣

React之父子组件传递和其它一些要点

react是R系技术栈中最基础同时也是最核心的一环,2年不到获取了62.5k star(截止到目前),足可见其给力程度。下面对一些react日常开发中的注意事项...

43880
来自专栏Web 开发

iOS9.1终于可以关闭讨厌的300ms延迟了

https://developer.apple.com/library/prerelease/mac/releasenotes/General/WhatsNew...

10500
来自专栏hbbliyong

Idea 常用功能汇总,工作中常用技巧,移出请说明原因,笔记花了好长时间汇总的

1.隐藏没用到的文件 比如 IDEA 的项目配置文件(.iml 和.idea),打开 Settings-File Types, 加入要隐藏的文件后缀。 ? 2...

28960
来自专栏木宛城主

ASP.NET MVC使用Bootstrap系列(3)——使用Bootstrap 组件

Bootstrap为我们提供了十几种的可复用组件,包括字体图标、下拉菜单、导航、警告框、弹出框、输入框组等。在你的Web Application中使用这些组件...

733100
来自专栏谦谦君子修罗刀

React-native-scrollable-tab-view详解

前言:他方山上有佳石,可以用来琢玉器。只有解决了一个红屏,才有机会遇见另一个红屏。只有解决了一个困难,才有机会遇到其他的困难。O(∩_∩)O~生命不息,奋斗不止...

1.4K100

扫码关注云+社区

领取腾讯云代金券