关于swing界面创建以及窗口放在屏幕中央的方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_22013331/article/details/41518137
/***********************************************************************************************
 * 关于创建swing界面,swing用户界面一般包含两种,一种是组件,一种是容器
 * 常见的组件主要有:按钮、文本框、文本区域、标签、复选框、单选按钮、滚动条、列表、菜单项和滑块
 * 常见的容器主要有:框架、面板、窗口、菜单、菜单栏和选项卡窗格
 * 这一节主要学习工具提示,标准对话框等
 ***********************************************************************************************/

//导入swing开发的相关库
import javax.swing.*; 

import java.awt.*;

public class Picture extends JFrame{ 
	
	/******************************************************************************************
	 * 定义一些标签和文本框
	 * 这些标签和文本框的属性是类对象 
	 ******************************************************************************************/
	public JLabel nameLabel=new JLabel("name:",SwingConstants.CENTER);
	public JTextField name;
	public JLabel urlLabel=new JLabel("URL:",SwingConstants.CENTER);
	public JTextField url;
	public JLabel typeLabel=new JLabel("Type:",SwingConstants.CENTER);
	public JTextField type;
	public JLabel numLabel=new JLabel("Number:",SwingConstants.CENTER);
	
	
	/******************************************************************************************
	 * 定义一个构造函数
	 * 构造函数中主要放置框架名称、尺寸、对关闭框架的响应等
	 ******************************************************************************************/
	public  Picture(){
		super("测试单元");
		//setSize(200,170);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		/**************************************************************************************
* 标准对话框
		 * 创建标准对话框需要使用JOptionPane,是一个小窗口,用于询问问题,向用户发出警告或者提供重要的消息
		 * 标准对话框不需要创建新的类、不用添加组件、也不用编写事件处理方法,所有这些都是用JOptionPane完成
		 * 有四个标准对话框类:
		 * 					ConfirmDialog:询问问题,包含Yes、No、Cancel
		 * 					InputDialog:提示用户输入文本
		 * 					MessageDialog:显示消息
		 * 					OptionDialog:包含上面三种对话框
		 * 具体的调用方法是:showConfirmDialog()、showInputDialog()、showMessageOption()以及
		 * 				   showOptionDialog()
		 **************************************************************************************/
		String response1=JOptionPane.showInputDialog(null,"Enter the site name:");
		name=new JTextField(response1,20);
		String response2=JOptionPane.showInputDialog(null,"Enter the site address:");
		url=new JTextField(response2,20);
		String[] choices={"Personal","Commercial","Unknown"};
		//这里是最复杂的OptionPane()选项框,
		//第八个参数作为默认输出
		/**************************************************************************************
		 *这里是最复杂的OptionPane()选项框
		 *第一个参数表示对话框的父组件
		 *第二个参数表示要显示的图标、文本或组件
		 *第三个参数表示对话框标题
		 *第四个参数表示对话框类型,有YES_NO_OPTION和YES_NO_CANCEL_OPTION,若要使用其他按钮,则字面量为0
		 *第五个参数表示要显示的图标,有ERROR_MESSAGE,INFORMATION_MESSAGE,PLAIN_MESSAGE,QUESTION_MESSAGE
		 *						或者是WARNING_MESSAGE,若要用其他图标,则字面量为0
		 *第六个参数表示Icon对象,用来替代第六个参数指定的图标
		 *choices被用作第七个参数,提示窗口中输出choices中的三个选项
		 *第八个参数表示默认输出
		 **************************************************************************************/
		int response3=JOptionPane.showOptionDialog(null, "what type of site is it?",
				"Site type", 0, JOptionPane.QUESTION_MESSAGE, null, choices, choices[0]);
		//注意到上面的response3返回值是一个int类型,是用户挑选的,可以用于下面的choices[response3]
		type =new JTextField(choices[response3],20);
		
		/**************************************************************************************
 *滑块
		 *滑块使用类JSlider来完成,让用户能够通过滑动控制来设置一个位于最大值和最小值之间的值
		 *一般用滑块来获得数字输入,从而限制可输入的值
		 *JSlider的构造方法主要有下面几种:
		 *			JSlider(int):设置指定方向的滑块儿,0表示横向,1表示纵向。最大值100,最小值0,默认值50
		 *			JSlider(int,int):指定最大值和最小值的滑块
		 *			JSlider(int,int,int):指定最大值、最小值和默认值的滑块
		 *			JSlider(int,int,int,int):指定方向、最小值、最大值、默认值的滑块
		 *在滑块加入容器之前,要进行一些标签的设置:
		 *			setMajorTickSpacing(int):按指定间隔设置主刻度线
		 *			setMinorTickSpacing(int):按指定间隔设置次刻度线
		 *			setPaintTicks(boolean):指定是否显示刻度线
		 *			setPaintLabels(boolean):指定是否显示数字标签
		 **************************************************************************************/
		JSlider num=new JSlider(0);
		num.setMajorTickSpacing(20);
		num.setMinorTickSpacing(2);
		num.setPaintTicks(true);
		num.setPaintLabels(true);
		
		/**************************************************************************************
*滚动窗格
		 *内置在文本区域或者其他组件内,当组件无法将其中的文本一次性显示出来时,使用滚动条
		 *在swing中,要让组件能够滚动,必须将它加入到容器JScrollPane中,再将该容器加入其他容器中
		 *使用函数ScrollPane来创建滚动窗格
		 *默认情况下,滚动窗格仅在需要是才会显示滚动条,窗格组件比窗格本身小的时候,滚动条将不会出现
		 *************************************************************************************/
		JTextArea textBox=new JTextArea(200,1000);
		JScrollPane scroller=new JScrollPane(textBox);
		JLabel scrollLabel=new JLabel("Scroll:",SwingConstants.CENTER);
		
		
		/**************************************************************************************
*工具栏
		 *用JTooBar类来创建,这是一个容器,将多个组件组织为一行或者一列,被阻止的组件称之为按钮
		 *默认时,工具栏是水平的
		 *构造函数为:
		 *		JToolBar():新建一个工具栏
		 *		JToolBar(int):创建了工具栏,并指定其方向
		 *创建以后,使用方法add()来加入其他组件,形成工具栏
		 *************************************************************************************/
		JToolBar bar=new JToolBar(0);
		JButton load=new JButton("load");
		JButton save=new JButton("save");
		bar.add(load);
		bar.add(save);
		JLabel barLabel=new JLabel("barlabel:",SwingConstants.CENTER);
				
		/*************************************************************************************
*顺序布局
		 *FlowLayout界面布局管理器
		 *FlowLayout是最简单的布局管理器,位于java.awt包中,按组件添加顺序从左向右排列。
		 *FlowLayout(int,int,int)接受三个参数:
		 *		第一个参数表示对其方式
		 *		第二个参数表示组件间的水平距离
		 *		第三个参数表示组件间的垂直距离
		 *************************************************************************************/
		//FlowLayout manager=new FlowLayout(FlowLayout.CENTER,30,10);
		//setLayout(manager);
		
		
		/*************************************************************************************
*方框布局
		 *BoxLayout类表示方框布局,将组件从左到右或者从上到下排列
		 *位于javax.swing包中
		 *对顺序布局作了改进,不管容器的大小如何变化,组件总是排列成一行或者一列
		 *************************************************************************************/
		//JPanel pla=new JPanel();
		//BoxLayout boxlay=new BoxLayout(pla,BoxLayout.X_AXIS);
		//pla.setLayout(boxlay);
		
		
		/*************************************************************************************
*网格布局
		 *将组件放置到由行和列组成的网格中,从网格的第一行开始,从左向右开始排列
		 *由类GridLayout来定义,位于java.awt包中
		 *提供了两个参数,分别是网格的行数和列数
		 *可以指定组件之间的垂直间距和水平间距,通过调用setHgap()和setVap()方法来实现
		 *也可以调用GridLayout中四个参数来实现,前两个表示行数和列数,后两个表示水平间距和垂直间距
		 *************************************************************************************/
		GridLayout grid=new GridLayout(6,1,5,8);
		setLayout(grid);
		//setLayout(new GridLayout(6,1,5,8));		
		
		/*************************************************************************************
*边框布局
		 *BorderLayout类,位于java.awt包中,将容器分为5部分,分别是东西南北中
		 *构造方法BorderLayout()和BorderLayout(int,int),前一个组件间的间距为零,后一个指定水平和垂直间距
		 *这也是一个容器类,建立完成以后,也要将各个组件添加到容器中
		 *指定组件加入到边框布局的哪个区域,包括SOUTH,NORTH,EAST,WEST,CENTER
		 *举个例子:
		 *	
		 *	JButton bt=new JButton("quit");
		 *	add(bt,BorderLayout.WEST);
		 *************************************************************************************/
		
		//直接在框架中添加各种组件,而没有选择添加容器的方式
		add(nameLabel);
		add(name);
		add(urlLabel);
		add(url);
		add(typeLabel);
		add(type);
		add(numLabel);
		add(num);
		add(scrollLabel);
		add(scroller);
		add(barLabel);
		add(bar);
		//add(pla);
		//setSize(200,600);
		pack();
	}
	
}



把窗口放置在屏幕的中央:

     int windowWidth = frame.getWidth();                     //获得窗口宽
     int windowHeight = frame.getHeight();                   //获得窗口高       
     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();             //获取屏幕的尺寸
     int screenWidth = screenSize.width;                     //获取屏幕的宽
     int screenHeight = screenSize.height;                   //获取屏幕的高
     frame.setLocation(screenWidth/2-windowWidth/2, screenHeight/2-windowHeight/2);//设置窗口居中显示  



展开阅读全文

没有更多推荐了,返回首页