Lesson_17_18_Note_Swing基本组件(上)

package Lesson_17_18;

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JFrame;

/**************************************************************
 * 				     		2013.3.12
 * 							2013.3.14
 * 				 	      Swing基本组件(上)
 * 					  	   @author Gavin
 **************************************************************/
/*********************************课堂内容*********************************
 * 1、GUI(Graphical User Interface)即图形用户界面,它能够使应用程序看上去更加友好
 * 2、在Java的早期版本中,GUI组件由名为AWT(Abstract Window Toolkit,抽象窗口工具包)
 * 		的标准库来提供除了GUI组件外,AWT还包括其它功能来支持图像绘画、处理剪切/复制类型
 * 		的数据传送,以及其它相关操作
 * 3、AWT组件最大的缺陷是它依赖于操作系统,也就是说,AWT程序运行在不同的操作上会有不同的
 * 		外观和行为,这一点对于Java的平台无关性来讲,是无法容忍的。
 * 4、Swing组件是在AWT组件基础上发展而来的轻量级组件,与AWT相比不但改进了用户界面,
 * 		而且所需的系统资源更少,Swing是纯Java组件,使得应用程序在不同的平台上运行时具
 * 		有相同外观和相同的行为
 * 5、javax.swing包中常用的容器组件:容器组件是指可以容纳其它组件的组件
 *  (1)JFrame 组件用于在Swing程序中创建窗体
 *  	--->JFrame()	创建新窗体,该窗体初始为不可见
 *  	--->JFrame(String title)创建新窗体,使用参数title指定标题,该窗体初始为不可见
 *  	--->void setTitle(String title)设置窗体的标题,标题内容由参数title指定
 *  	--->void setSize(int width, int height)设置窗体的大小,参数width指定宽度,
 *  											参数height指定高度,单位是像素
 *  	--->void setResizable(boolean resizable)设置窗体能否调整大小,由参数resizable决定
 *  	--->void setVisible(boolean b)	设置窗体是否为可见,由参数b决定,true为可见,false为不可见
 * 		--->Container getContentPane()获得当前窗体的内容面板
 * 		--->void setDefaultCloseOperation(int operation)设置窗体在关闭时默认执行的操作
 * 		--->void dispose()释放当前窗体及其所有子组件所占用的资源,即卸载窗体
 * 		--->void repaint()重新绘制当前窗体
 * 	--->对于类似于窗体这样的容器组件,我们一般自定义一个类,继承于JFrame类,然后将窗体中
 * 			的子组件作为类中成员进行声明,以方便操作
 * 	--->事实上,一个完整的窗体是由外部框架和内容面板两部分组成的
 * 		外部框架是指由标题栏和四边所组成空心边框,它主要用来控制窗体的大小和外观
 * 		我们实际操作的是内容面板,如设置窗体的背景色,设置窗体的布局,往窗体中添加其它组件等等
 * 		使用getContentPane方法获得当前窗体的内容面板,该方法的返回值是Container(容器)类对象
 * 		Container类在java.awt包中
 *  (2)java.awt.Container类,Container类通常用于操作JFrame的内容面板,其常用的方法有
 *  	---> void setBackground(Color bg)设置容器的背景色,由参数bg指定颜色
 *  	--->void setLayout(LayoutManager mgr)设置容器的布局,参数是布局管理器
 *  	--->Component add(Component comp)往容器中添加一个组件
 *  	--->Component add(Component comp, int index)将指定组件添加到容器中的指定位置上
 *  	--->void remove(Component comp)从容器中移除指定的组件
 *  	--->void removeAll()从容器中移除所有组件
 *  	--->void repaint()重新绘制当前容器
 *  (3)javax.swing.JDialog,JDialog用于在程序中创建对话框组件
 *  	---->它与JFrame的区别在于,JFrame可以在程序中不依赖于其它窗体
 *  		单独存在,而JDialog则必须依赖于其它窗口,一般做辅助窗口呈现
 *  	---->但更重要的是,JDialog支持模式显示
 *  		所谓模式显示,是指窗口以不丢失焦点的独占方式显示
 *  
 *  	--->JDialog()创建一个没有标题并且没有指定所有者的无模式对话框
 *  	--->JDialog(Frame owner)创建一个没有标题但将指定的owner作为其所有者的无模式对话框
 *  	--->JDialog(Frame owner, boolean modal)创建一个没有标题但有指定所有者的对话框,
 *  										根据参数modal来决定它是否模式显示
 *  	--->JDialog(Frame owner, String title)创建一个具有指定标题和指定所有者的无模式对话框
 *  	--->JDialog(Frame owner, String title, boolean modal)创建一个有指定标题和指定所有者
 *  												的对话框,参数modal决定它是否模式显示
 *  	--->JDialog(Dialog owner, boolean modal)创建一个没有标题但有指定所有者的对话框,
 *  											根据参数modal来决定它是否模式显示
 *  	--->void setTitle(String title)设置对话框的标题,标题内容由参数title指定
 *  	--->void setSize(int width, int height)设置对话框的大小
 *  	--->void setResizable(boolean resizable)设置对话框能否调整大小,由参数resizable决定
 *  	--->void setVisible(boolean b)设置对话框是否为可见,由参数b决定,true为可见,false为不可见
 *  	--->Container getContentPane()获得当前对话框的内容面板
 *  	--->void dispose()释放当前对话框及其所有子组件所占用的资源,即卸载对话框
 *  ()未完待续...
 *  
 *  6、Color类用于创建颜色对象,其构造方法共有7种重载方式,常用的是:
 *  	--->Color(int r, int b, int g)使用指定的红、蓝、绿的色值创建sRGB颜色对象,
 *  		这些值都在0~255的范围之内
 *  	--->Color类中还提供一系列静态的颜色常量
 *  7、javax.swing.JButton
 *  	--->JButton()创建一个空按钮
 *  	--->JButton(String text)创建一个带文本的按钮
 *  	--->JButton(Icon icon)创建一个带图标的按钮
 *  	--->JButton(String text, Icon icon)创建一个带文本和图标的按钮
 *  
 *  	--->void setText(String text)设置按钮上的文本
 *  	--->String getText()获得按钮上的文本
 *  	--->void setBackground(Color bg)设置按钮的背景色
 *  	--->Color getBackground()获得按钮的背景色
 *  	--->void setEnabled(boolean b)设置启用(或禁用)按钮,由参数b决定
 *  	--->void setVisible(boolean b)设置按钮是否为可见,由参数b决定
 *  	--->void setToolTipText(String text)设置按钮的悬停提示信息
 *  	--->void setMnemonic(int mnemonic)设置按钮的快捷键
 *  8、布局管理器
 *  	--->流式布局(FlowLayout)
 *  	--->边界布局(BorderLayout)
 *  	--->网格布局(GridLayout)
 *  -->一般使用空布局来解决复杂的界面
 *  	
 ******************************************************************************/
public class Day3_12 {
	public static void main(String[] args) {
//		//窗口程序
//		JFrame f=new JFrame();//创建了一个 窗体对象 默认不可见
//		f.setSize(400,300);
//		f.setTitle("QQ");//设置窗体的标题 为 "QQ"
//		f.setResizable(false);//禁止改变窗体大小
//		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//JFrame.Exit_ON_CLOSE=3 常量字段
//		f.setLocationRelativeTo(null);//设置居中显示
//		f.repaint();//重新绘制窗体
//		f.setVisible(true);//设置可见,让窗体显示出来,一般都放在最后
		
		MyFrame f2=new MyFrame();
		Container c=f2.getContentPane();//获得当前窗体的容器面板
		c.setBackground(Color.yellow);//设置背景色为黄色
		
		//也可以自己构造一个颜色,比如产生一个随机颜色--->RGB
		Random r=new Random();
		c.setBackground(new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256)));
		//Jbutton:按钮
//		JButton btnOK=new JButton("确定");
//		f2.add(btnOK);
		
		
		
//		JFrame frame=new JFrame("我的窗口");//创建了一个窗体对象 名字叫frame,使用“我的窗口”作为标题,默认不可见
//		JButton btnOk=new JButton("确定");
//		frame.setLayout(new FlowLayout());
//		frame.setSize(500,300);//设置大小
//		frame.add(btnOk);
//		frame.getContentPane().setBackground(Color.BLUE);
//		frame.setBackground(Color.orange);//窗口是由很多层组成的,背景色在最后,故看不到
//		frame.setVisible(true);
	}
}


 

package Lesson_17_18;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.Border;

public class MyFrame extends JFrame{//一般会自己定义一个类,继承于JFrame,来操作里面的内容,方便
	JLabel lal=new JLabel("用户登录");
	JButton btnOK1=new JButton("确定1");
	JButton btnOK2=new JButton("确定2");
	JButton btnOK3=new JButton("确定3");
	JButton btnOK4=new JButton("确定4");
	JButton btnOK5=new JButton("确定5");
	public MyFrame(){
		this.setTitle("我的自定义窗口");
		this.setSize(400,300);
		this.setResizable(false);//禁止改变窗体大小
		
		lal.setForeground(Color.yellow);
		lal.setFont(new Font("黑体",Font.BOLD ,24));
		
		//往窗体上添加按钮
		//容器会有布局管理器来负责管理里面的组件是如何放置的。
		//每个容器都有默认的布局管理器,如:窗体的JFrame的默认管理为:边框布局(将窗口划分为上下左右中五个区域)
		//所以,在窗体中添加组件时要指定放的位置
		this.setLayout(new FlowLayout(FlowLayout.LEFT));//设置为流式布局
		//这时就不用说明按钮的方向了 因为它是按从左到右的顺序摆放的,如果溢出,会自动换到下一行,重新开始
		this.add(lal);
		
		this.add(btnOK1,BorderLayout.NORTH);//放在上面
		this.add(btnOK2,BorderLayout.SOUTH);//放在下面
//		this.add(btnOK3,BorderLayout.EAST);//放在右边
//		this.add(btnOK4,BorderLayout.WEST);//放在左边
//		this.add(btnOK5);//默认放在中间
		//BorderLayout就是布局管理器
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//JFrame.Exit_ON_CLOSE=3 常量字段
		this.setLocationRelativeTo(null);//设置居中显示
		this.setVisible(true);//设置可见,让窗体显示出来,一般都放在最后
	}//这样的话,只要是利用自定义类创建的窗体,都会是这样的设置
}


 

package Lesson_17_18;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class NullLayout extends JFrame {
	JButton btnOK=null;
	JTextField text=null;	//文本框
	JPasswordField password=null;//密码框
	public NullLayout() {
		super("空布局的使用");
		this.setIconImage(new ImageIcon("Ico.jpg").getImage());
		this.setSize(400,300);
		this.setLayout(null);//空布局:意味着必须指定加入的组件的位置和大小
		init();
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);
		this.setVisible(true);
	}
	public void init(){
		btnOK=new JButton("确定(O)");
//		btnOK.setIcon(new ImageIcon("Ico.jpg"));//给按钮设置图标
		btnOK.setMnemonic('O');//设置热键
		btnOK.setBounds(100,100,80,30);//设置按钮位置和大小
		this.add(btnOK);//添加按钮到窗体
		
		text=new JTextField();//文本框
		text.setBounds(100,10,200,35);
		this.add(text);
		
	}
	public static void main(String[] args) {
		new NullLayout();
	}
}


 

你可能感兴趣的:(Lesson_17_18_Note_Swing基本组件(上))