java-布局及补充组件
基本布局方式
一 卡片布局-CardLayou
二 边界布局-BorderLayout东南西北中的方式
三 网格袋布局-GridBagLayout
四 分割面板-JSplitPanel只能分割两个组件,类型不限
相应的方法可以API中查询,前面的文章提供了API的下载链接
补充组件
五 选项卡组件-JTabbedPane
六 桌面组件-JDesktopPane
七 内部窗体组件-JInternalFrame
实现一个小程序,利用卡片布局
基本思想
建立3个面板
->建立一个卡片
->在其中一个面板上添加卡片
->将另外两个面板添加到卡片上,将面板设置不同的颜色
->在卡片上的两个面板上分别建立两个按钮
->为按钮添加事件处理机制,点击其中一个面板上的按钮,显示另外一个面板的颜色
面板上添加卡片
卡片上添加面板
面板上在添加两个按钮
按钮设置事件处理机制
点击按钮实现面板转换
eg: package com.chengzhi.pkg1; import java.awt.CardLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class TestGui extends JFrame implements ActionListener{ JPanel p1, p2, p3; JButton b1, b2; CardLayout cardlayout; public TestGui(){ p1 = new JPanel(); p2 = new JPanel(); p3 = new JPanel(); b1 = new JButton("显示红色按钮"); b2 = new JButton("显示绿色按钮"); cardlayout = new CardLayout(); p1.setLayout(cardlayout); p2.setBackground(Color.red); p3.setBackground(Color.green); p1.add("panel2", p2); p1.add("panel3", p3); p2.add(b2); p3.add(b1); this.getContentPane().add(p1); this.setSize(300, 300); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //cardlayout.last(p1); //cardlayout.first(p1); //cardlayout.show(p1, "panel2"); b1.addActionListener(this); b2.addActionListener(this); } public static void main(String[] args) { new TestGui(); } @Override public void actionPerformed(ActionEvent e) { JButton b = (JButton)e.getSource(); if (b == b1){ //cardlayout.show(p1, "panel2"); cardlayout.next(p1); } if (b == b2) { //cardlayout.show(p1, "panel3"); cardlayout.next(p1); } } }
时间: 2024-08-07 00:11:20