java-布局及补充组件

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

java-布局及补充组件的相关文章

Java布局管理器组件

Java布局管理器组件 所谓布局管理器,就是为容器内的组件提供若干布局策略,每个容器都拥有某种默认布局管理器,用于负责其内部组件的排列.目前开发中,常用的布局管理器有BorderLayout.FlowLayout.GridLayout.GridBagLayout.CardLayout.BoxLayout.SpringLayout.GroupLayout等: 布局管理器种类 BorderLayout FlowLayout GridLayout GridBagLayout CardLayout Bo

【Java Swing探索之路系列】之三:Java Swing布局管理器组件

作者:郭嘉 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 一 BorderLayout BorderLayout是一种简单的布局策略,可以将其看作一个组件.它把容器分为东.南.西.北.中5个区域,每个组件将占据某个区域.而 这5个区域分别被命名为NORTH, WEST, EAST, CENTER, SOUTH,它们都被定义为静态 常量.静态常量可以直接引用,如

Java布局管理器setLayout()

Java布局管理器setLayout() 1.FlowLayout public FlowLayout(int align,int hgap,int vgap) 创建一个新的流布局管理器,具有指定的对齐方式以及指定的水平和垂直间隙. 对齐参数的值必须是以下之一:FlowLayout.LEFT.FlowLayout.RIGHT.FlowLayout.CENTER.FlowLayout.LEADING 或 FlowLayout.TRAILING. 参数: align - 对齐值 hgap - 组件之

聊聊高并发(二十九)解析java.util.concurrent各个组件(十一) 再看看ReentrantReadWriteLock可重入读-写锁

上一篇聊聊高并发(二十八)解析java.util.concurrent各个组件(十) 理解ReentrantReadWriteLock可重入读-写锁 讲了可重入读写锁的基本情况和主要的方法,显示了如何实现的锁降级.但是下面几个问题没说清楚,这篇补充一下 1. 释放锁时的优先级问题,是让写锁先获得还是先让读锁先获得 2. 是否允许读线程插队 3. 是否允许写线程插队,因为读写锁一般用在大量读,少量写的情况,如果写线程没有优先级,那么可能造成写线程的饥饿 关于释放锁后是让写锁先获得还是让读锁先获得,

Java布局方式

转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992371.html Java为我们提供了几个常用的布局管理器类,例如:FlowLayout.BorderLayout.GridLayout.GridBagLayout等. java.awt FlowLayout 将组件按从左到右而后从上到下的顺序依次排列,一行不能放完则折到下一行继续放置 java.awt GridLayout 形似一个无框线的表格,每个单元格中放一个组件 java.awt Bo

解决Android界面布局添加EditText组件后界面无法预览

错误报告: Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V Exception details are logged in Window > Show View > Error Log 问题分析: 进入xml源文件里发现一个警告,提示添加inputType或者hint元素,添加后界面仍然无法预览... 仔细查看了当前使用的API等级 API 20:Android 4.4w,这是Android官网发布

JAVA+PHP+阿里云组件纯手工实现POP、SMTP、IMAP开发邮件服务器(二)

java开发邮件服务器的接收模块 用java建立socket服务端,监听端口25,实现SMTP协议.即可完成邮件服务器的接收模块. 这里要注意的是,SMTP协议其实可以分为两种.一种是你用手机.PC等客户端发邮件到邮件服务商的服务器的时候用的SMTP协议,这一类是需要登录验证的.一种是邮件服务商之间传递邮件的SMTP协议,此类协议是不需要登录的.比如你用Foxmail上你的QQ邮箱发送了一封邮件到163的邮箱.过程是这样的: 邮件从Foxmail通过SMTP协议发送到QQ邮箱的服务器. QQ邮箱

聊聊高并发(二十五)解析java.util.concurrent各个组件(七) 理解Semaphore

前几篇分析了一下AQS的原理和实现.这篇拿Semaphore信号量做样例看看AQS实际是怎样使用的. Semaphore表示了一种能够同一时候有多个线程进入临界区的同步器,它维护了一个状态表示可用的票据,仅仅有拿到了票据的线程尽能够进入临界区,否则就等待.直到获得释放出的票据. Semaphore经常使用在资源池中来管理资源.当状态仅仅有1个0两个值时,它退化成了一个相互排斥的同步器.类似锁. 以下来看看Semaphore的代码. 它维护了一个内部类Sync来继承AQS,定制tryXXX方法来使

聊聊高并发(四十一)解析java.util.concurrent各个组件(十七) 任务的异步执行和状态控制

聊聊高并发(三十九)解析java.util.concurrent各个组件(十五) 理解ExecutorService接口的设计这篇说了ExecutorService接口扩展了Executor接口,在执行任务的基础上,提供了执行框架生命周期的管理,任务的异步执行,批量任务的执行的能力.AbstractExecutorService抽象类实现了ExecutorService接口,提供了任务异步执行和批量执行的默认实现.这篇说说任务的异步执行和状态控制 说明一点,使用Executor框架执行任务的方式