CardLayout使用

相对于BoxLayout,GridBugLayut等常用的Swing layout,CardLayout是特殊的,前者是一个容器内布置组件,而后者是在一个容器内放置很多页面(但一个时间只用显示一个)。

比如需要制作Step by Step的桌面程序,使用CardLayout就非常方便快捷。下面用代码说明:

复制代码
JPanel innerPanel=new JPanel(new CardLayout());// 对容器innerPanel设置为CardLayout

// 用于初始化页面和显示页面的一些字符串常量

private static final String WELCOME="welcome"; 
private static final String URL="url"; 
private static final String COUNT="count";

// 把欢迎页加入innerPanel,WelcomePage继承自JPanel,下类同
welcomePage=new WelcomePage("/welcome.jpg");
innerPanel.add(welcomePage,WELCOME);

// 把地址页加入innerPanel
urlPage=new UrlPage();
innerPanel.add(urlPage,URL);

// 把数目页加入innerPanel
countPage=new CountPage();
innerPanel.add(countPage,COUNT);

需要显示某个页面的话可以用下面的函数,pageName取值就是前面定义的"welcome","url","count"等。

// 显示一个页面
public void showPage(String pageName){
        CardLayout c=(CardLayout)(innerPanel.getLayout());
        c.show(innerPanel, pageName);
}
复制代码

每当一个页面被显示出来,其它页面就被遮挡了。要是不采用CardLayout而自己编码,要多花些工夫.

posted @   逆火狂飙  阅读(3692)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示