`
古尔丹之颅
  • 浏览: 31073 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

java总结之 图形界面的简单开发

阅读更多

       个人感觉java的界面开发也算是其优势之一!只要用心,就能做出美轮美奂的界面!下面简单介绍下

java中的简单界面开发是如何实现的!

      java提供了Swing开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插

拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅

的用户界面。

 

      java的图形界面类
1.awt(包名:java.awt)   是在jdk1.4之前推出的图形界面类
      2.swing(包名:javax.swing)[轻量级组件]
      jdk1.4的时候推出的图形界面类
      所有的图形界面类的第一个字母是大写J开头的。
awt严格意义上跨平台性能很差。swing是基于java的组件,所以完全具有跨平台特性。
虽然大家都是说awt好,但是感觉一旦需要跨平台时,swing的优势就体现出来了,这也是java的立足之本!
2.常用的组件类(javax.swing)
容器组件
JFrmae 窗体容器
JPanel 面板容器
 
常用的元素组件有
JLabel 标签
JTextField 文本输入框
JPasswordField 密码输入框
JComboBox 下拉框
JCheckBox 复选框
JButton 按钮
3.常用的布局类(java.awt)
BorderLayout 边框布局
FlowLayout 流式布局
GridLayout 网格布局
布局方面我们还可以按照一定的需要将界面设置为空布局,只是在设置为空布局之后,需要使用setBounds方法将所有添加的容器组件设定坐标!
如果要做一个简单的界面,我们首先要先定义一个类,在类中定义定义主函数和初始化界面的initGUI()方法。
在主函数中实例化类的对象,然后调用initGUI方法。在initGUI()方法中我们可以按需要添加自己想要添加的容器组件!现附上自己写的代码如下,这是我坐的简单的飞机订票系统的界面,在代码中我使用的就是空布局的方法,并且运用了卡牌布局!
 
package hangban;

import javax.swing.*;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.List;
import java.util.ArrayList;


public class Flight extends JFrame {

		public static void main(String [] args){
			Flight dl = new Flight();
			dl.initGUI();
	}

		

	public void initGUI() {
		//JFrame jf2;
		// 主界面控件定义 开始
		this.setTitle("飞机订票系统");
		this.setSize(600, 500);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocation(400, 200);

		JMenuBar jm = new JMenuBar();// 实例化菜单栏的对象
		JMenu jm1 = new JMenu("主界面");// 实例化菜单项的对象
		jm.add(jm1);// 添加到菜单栏中
		JMenu jm2 = new JMenu("航班信息");// 实例化菜单项的对象
		jm.add(jm2);// 添加到菜单栏中
		JMenu jm3 = new JMenu("路线查询");// 实例化菜单项的对象
		jm.add(jm3);// 添加到菜单栏中
		JMenu jm4 = new JMenu("票务管理");// 实例化菜单项的对象
		jm.add(jm4);// 添加到菜单栏中
		
		JMenuItem jm11 = new JMenuItem("主界面");
		jm1.add(jm11);
		// 实例化菜单子项的对象
		JMenuItem jm21 = new JMenuItem("航班信息录入");
		JMenuItem jm22 = new JMenuItem("航班信息浏览");
		JMenuItem jm23 = new JMenuItem("航班信息修改");
		// 将对象添加到菜单项中
		jm2.add(jm21);
		jm2.add(jm22);
		jm2.add(jm23);
	
		JMenuItem jm31 = new JMenuItem("按班次查询");
		JMenuItem jm32 = new JMenuItem("按终点站查询");
		jm3.add(jm31);
		jm3.add(jm32);

		JMenuItem jm41 = new JMenuItem("售票");
		JMenuItem jm42 = new JMenuItem("退票");
		jm4.add(jm41);
		jm4.add(jm42);

		
	this.setJMenuBar(jm);
	final CardLayout card = new CardLayout();
	final JPanel jp = new JPanel();//主要的面板,该面板是被设定成卡片布局的面板。
	jp.setLayout(card);
	JPanel j1 = new JPanel();
	JPanel j2 = new JPanel();
	JPanel j3 = new JPanel();
	JPanel j4 = new JPanel();
	JPanel j5 = new JPanel();
	JPanel j6 = new JPanel();
	JPanel j7 = new JPanel();
	JPanel j8 = new JPanel();
	JPanel j9 = new JPanel();//提供能够翻转的9个面板
	
	
	JLabel jl12 = new JLabel("欢迎使用飞机订票系统");
	j1.add(jl12);
	jl12.setFont(new Font("宋体", Font.BOLD, 50));
	ImageIcon bk = new ImageIcon("3.jpg");
	JLabel jl11 = new JLabel(bk);
	j1.add(jl11);
	
	ImageIcon bk1 = new ImageIcon("1.jpg");
	JLabel jl21 = new JLabel(bk1);
	j2.add(jl21);
	
	ImageIcon bk2 = new ImageIcon("2.jpg");
	JLabel jl22 = new JLabel(bk2);
	//j3.add(jl22);
	
	ImageIcon bk3 = new ImageIcon("4.jpg");
	JLabel jl23 = new JLabel(bk3);
	j4.add(jl23);
	
	ImageIcon bk4 = new ImageIcon("5.jpg");
	JLabel jl31 = new JLabel(bk4);
	j5.add(jl31);
	
	ImageIcon bk5 = new ImageIcon("6.jpg");
	JLabel jl32 = new JLabel(bk5);
	j6.add(jl32);
	
	ImageIcon bk6 = new ImageIcon("7.jpg");
	JLabel jl41 = new JLabel(bk6);
	j7.add(jl41);
	
	ImageIcon bk7 = new ImageIcon("8.jpg");
	JLabel jl42 = new JLabel(bk7);
	j8.add(jl42);//添加9个可翻转的卡片,并添加背景图片

	jp.add(j1,"11");
	jp.add(j2,"21");
	jp.add(j3,"22");
	jp.add(j4,"23");
	jp.add(j5,"31");
	jp.add(j6,"32");
	jp.add(j7,"41");
	jp.add(j8,"42");
	jp.add(j9,"5");//给9个卡片面板添加到主面板,并起名字
	this.add(jp);
	//菜单项,主界面事件监听
	 jm11.addActionListener(new ActionListener(){
		   	public void actionPerformed(ActionEvent e) {
				card.show(jp,"11");
		}});
	
	 //菜单项,航班信息录入事件监听器
	 jm21.addActionListener(new ActionListener(){
		   	public void actionPerformed(ActionEvent e) {
		   		JFrame jf = new JFrame();
		   		jf.setTitle("航班浏览");
		   		jf.setSize(700,300);
		   		jf.setLocation(200,200);
		   		jf.setDefaultCloseOperation(2);
		   		jf.setResizable(false);//禁止更改窗口大小
		   		//设置航班信息录入的界面
		   		JButton jb1 = new JButton("录入信息");
		   		jb1.setFont(new Font("宋体", Font.BOLD, 20));
		   		JButton jb2 = new JButton("保存信息");
		   		jb2.setFont(new Font("宋体", Font.BOLD, 20));
		   		JPanel jp24 = new JPanel();
		   		jf.add(jp24,BorderLayout.SOUTH);
		   		jp24.add(jb1,BorderLayout.WEST);
		   		jp24.add(jb2,BorderLayout.EAST);
		   		//运用JTabel,设置表格,
		   		
		   		
		   		
		   		
						 
		   		String[] columnNames={"班次","起飞时间","起点站","终点站","飞行时间","额定载量","已售票人数"};
				final Object[][] rowData={{"1","8:00","天津","广汉","2","145","120"},
									{"2","6:30","天津","成都","0.5","140","140"},
									{"3","7:00","天津","成都","0.5","140","120"},
									{"4","10:00","天津","成都","0.5","140","120"},};
						 JTable jt=new JTable(rowData,columnNames);
						 JScrollPane sp=new JScrollPane(jt);
						 jt.setRowHeight(35);
					   	 jf.add(sp);
						 card.show(jp,"21");
				//具体航班信息的录入窗口		 
		   		jb1.addActionListener(new ActionListener(){
		   				
		   			public void actionPerformed(ActionEvent e){
		   
		   				JFrame jf1 = new JFrame();
				   		jf1.setTitle("航班信息录入");
				   		jf1.setLayout(null);
				   		jf1.setSize(700,200);
				   		jf1.setLocation(200,300);
				   		jf1.setDefaultCloseOperation(2);
				   		jf1.setResizable(false);//禁止更改窗口大小
				   		JLabel jl211 = new JLabel("班次");
				   		jl211.setBounds(0,0,80,50);
				   		JLabel jl212 = new JLabel("起飞时间");
				   		jl212.setBounds(100,0,80,50);
				   		JLabel jl213 = new JLabel("起点站");
				   		jl213.setBounds(200,0,80,50);
				   		JLabel jl214 = new JLabel("终点站");
				   		jl214.setBounds(300,0,80,50);
				   		JLabel jl215 = new JLabel("起飞时间");
				   		jl215.setBounds(400,0,80,50);
				   		JLabel jl216 = new JLabel("额定载量");
				   		jl216.setBounds(500,0,80,50);
				   		JLabel jl217 = new JLabel("已售票人数");
				   		jl217.setBounds(600,0,80,50);
				   		final JTextField jt211 = new JTextField(10);
				   		jt211.setBounds(0,50,80,50);
				   		final JTextField jt212 = new JTextField(10);
				   		jt212.setBounds(100,50,80,50);
				   		final JTextField jt213 = new JTextField(10);
				   		jt213.setBounds(200,50,80,50);
				   		final JTextField jt214 = new JTextField(10);
				   		jt214.setBounds(300,50,80,50);
				   		final JTextField jt215 = new JTextField(10);
				   		jt215.setBounds(400,50,80,50);
				   		final JTextField jt216 = new JTextField(10);
				   		jt216.setBounds(500,50,80,50);
				   		final JTextField jt217 = new JTextField(10);
				   		jt217.setBounds(600,50,80,50);
				   		jf1.add(jt211);
				   		jf1.add(jt212);
				   		jf1.add(jt213);
				   		jf1.add(jt214);
				   		jf1.add(jt215);
				   		jf1.add(jt216);
				   		jf1.add(jt217);
				   		jf1.add(jl211);
				   		jf1.add(jl212);
				   		jf1.add(jl213);
				   		jf1.add(jl214);
				   		jf1.add(jl215);
				   		jf1.add(jl216);
				   		jf1.add(jl217);

				   		JButton jb2 = new JButton("确定录入");
						 jb2.setFont(new Font("宋体", Font.BOLD,12));
						 jb2.setBounds(300,120,100,40);
						 jf1.add(jb2);
						 
						JButton jb3 = new JButton("添加航班");
						 jb3.setFont(new Font("宋体", Font.BOLD,12));
						 jb3.setBounds(200,120,100,40);
						 jf1.add(jb3);
	
						 jb3.addActionListener(new actionL(jt211,jt212,jt213,jt214,jt215,jt216,jt217){
							

							public void actionPerformed(ActionEvent e) {
							 String str1 = jt211.getText();
							 String str2 = jt211.getText();
							 String str3 = jt211.getText();
							 String str4 = jt211.getText();
							 String str5 = jt211.getText();
							 String str6 = jt211.getText();
							 String str7 = jt211.getText();
							 Object[][] rowData = new Object[][]{{"1","8:00","天津","广汉","2","145","120"},	
									 				{"2","6:30","天津","成都","0.5","140","140"},
									 				{"3","7:00","天津","成都","0.5","140","120"},
									 				{"4","10:00","天津","成都","0.5","140","120"},
									 				{str1,str2,str3,str4,str5,str6,str7}
									 				};}
						 });
						 
						 actionL al = new actionL(jf1);
						 jb2.addActionListener(al);								
						 jf1.setVisible(true);
						 }});

		   		 		jf.setVisible(true);
		   	}});
	
	
		jm22.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				
		   		/*JTable tab=new JTable();//创建一个表格对象
		   		List list = getList();//得到要显示的用户列表对象
		   		User us = new User(list);//创建我们实现的TableModel对象。
		   		tab.setModel(us);//将模型设给表格
		   		j3.add(tab);
		   		ArrayList nlist = new ArrayList();*/
		   		
		   		
		   		
				
				String[] columnNames={"班次","起飞时间","起点站","终点站","飞行时间","额定载量","已售票人数"};
				Object[][] rowData={{"1","8:00","天津","广汉","2","145","120"},
									{"2","6:30","天津","成都","0.5","140","140"},
									{"3","7:00","天津","成都","0.5","140","120"},
									{"4","10:00","天津","成都","0.5","140","120"},};
						 
				JTable jt=new JTable(rowData,columnNames);		
				JScrollPane sp=new JScrollPane(jt);
		   		jt.setRowHeight(35);
		   		jp.add(sp,"00");
		   		card.show(jp,"22");
			}

			private List getList() {
				// TODO Auto-generated method stub
				return null;
			}});
		
		jm23.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				card.show(jp,"23");
			}});
		
		jm31.addActionListener(new ActionListener(){
			
			public void actionPerformed(final ActionEvent e){
				
				card.show(jp,"5");
				
			}});
		
		jm32.addActionListener(new ActionListener(){
			
			public void actionPerformed(final ActionEvent e){
				card.show(jp,"32");
			}});
		
		jm41.addActionListener(new ActionListener(){
	
			public void actionPerformed(final ActionEvent e){
		card.show(jp,"41");
	}});

		jm42.addActionListener(new ActionListener(){
	
			public void actionPerformed(final ActionEvent e){
		card.show(jp,"42");
	}});

		
		//录入班次信息
		jm21.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				
			}});

		this.setVisible(true);
	}

}






class actionL implements ActionListener{
	JTextField jt;
	JFrame _jf;
	
	public actionL(JFrame jf){
		this._jf = jf;
	}
	

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		_jf.dispose();
	}

	public actionL(JTextField jt11,JTextField jt12,JTextField jt13,JTextField jt14,JTextField jt15,JTextField jt16,JTextField jt17){
		this.jt = jt11;
		this.jt = jt12;
		this.jt = jt13;
		this.jt = jt14;
		this.jt = jt15;
		this.jt = jt16;
		this.jt = jt17;
	}
	public void actionPerformed1(ActionEvent e) {
		// TODO Auto-generated method stub
		
	}
}
这是本学期期末做的学期末课程设计,因时间不够充裕,遂把用界面化实现所有功能的想法放弃了,目前只能显示界面!稍有不完善!  其中添加了监听器,并且运用了卡牌布局以及空布局方式,虽然结果是失败了,但是那几天我学会了很多东西,并且那种刻苦钻研之后的来的知识已经深深的映在我的脑海中了,换个角度想想,也许我也可以算是成功了!
 
 
分享到:
评论
4 楼 古尔丹之颅 2013-07-31  
简单看了下B/S,也分析了我写过的C/S代码,C/S开发同样需要数据的输入输出(包括界面),数据处理,不同点是C/S还需要写客户端!!!!其他的就不太清楚了!!!
3 楼 蓝色毒箭蛙 2013-07-31  
我没有用过AWT,所以我没有什么体会。
老师教导的是:(B/S)软件的开发一般就三个方面:数据的输入输出(界面),数据的处理(业务),数据的存储(数据库)。每一个方面都有各自的开发工具。
不知道C/S开发是怎么样的。
2 楼 古尔丹之颅 2013-07-31  
这个见仁见智吧,我还是新手菜鸟,起码现在我觉得还可以,看样子离你们老师的境界还有距离!!!!!!
1 楼 蓝色毒箭蛙 2013-07-31  
这个java自带的图形界面工具不是优势吧。
听老师说,这个图形界面的设计都不会用java自带的东西AWT,而是其他的,比如HTML+CSS+Javascript作界面设计。

相关推荐

    JavaSwing图形界面开发与案例详解源代码

    Java Swing是目前图形界面设计的主流开发工具,《Java Swing图形界面开发与案例详解[1]》从实用的角度出发,通过大量实例全面介绍Java Swing中各种组件的应用及图形界面的开发技术。《Java Swing图形界面开发与案例...

    Java+Swing图形界面开发与案例详解实例代码

    它是Java Foundation Classes (JFC)的一部分,提供了一套丰富的组件库,允许开发者创建功能完备、交互性强的图形用户界面(GUI)。本实例代码集主要围绕Java Swing进行讲解,通过具体的案例深入解析其使用方法。 在...

    Java Swing图形界面开发与案例详解

    java swing是目前图形界面设计的主流开发工具 本书从实用角度出发 通过大量实例介绍各种组件及图形界面的开发技术 几乎涵盖了图形开发必备的所有常用知识 丰富的实例 且实例均来自于工程实践 适合初学者阅读 也可供...

    《java+swing图形界面开发与案例详解》源代码

    本资源"《java+swing图形界面开发与案例详解》源代码"提供了丰富的学习材料,帮助开发者深入理解如何利用Java Swing构建功能丰富的图形用户界面。 在Java Swing中,组件是构成GUI的基本元素,例如按钮、文本框、...

    Java Swing图形界面开发与案例详解 .王鹏等.扫描版.pdf

    Java Swing图形界面开发与案例详解 .王鹏等.扫描版.pdf

    JAVA图形界面开发

    介绍了通过JAVA进行图形界面开发的相关知识和代码介绍。

    Java+Swing图形界面开发与案例详解》实例代码

    在"Java+Swing图形界面开发与案例详解"这本书中,作者深入浅出地介绍了如何使用Swing来设计和实现GUI应用。 该书的实例代码包含了从第一讲到第八讲的源码,逐步引导读者从基础到进阶掌握Swing的使用。以下是这些讲...

    《Java Swing图形界面开发与案例详解》源代码_java_baseballkn8_

    《Java Swing图形界面开发与案例详解》是一本深入讲解Java GUI编程的书籍,源代码提供了丰富的实例,适合Java初学者入门学习。Swing是Java AWT(Abstract Window Toolkit)库的扩展,它提供了更为丰富的组件和更现代...

    Java.Swing图形界面开发与案例详解

    [Java Swing图形界面开发与案例详解].王鹏等.扫描版.pdf 是学习Java Swing的好帮手

    JAVA+图形界面开发

    Java图形界面开发的核心组件之一是`Canvas`。这是一个基本的图形容器,允许开发者在其上绘制图形,并且能够监听用户的输入事件。为了实现更高级的图形界面,本文提出了一种基于`Canvas`的解决方案,通过创建`Canvas`...

    Java图形界面开发—学生信息管理系统 完整源码

    学生信息管理系统,使用Java开发。 1、登录界面可以进行登录操作。有俩种权限选择。分别跳转到不同的界面。 2、使用了事件监听、Java操作SQLserver数据库等知识。 3、图形化界面中使用了JTable等组件,将查询结果...

    Java语言的图形用户界面开发技术

    应用AWT组件开发图形用户界面程序 Java事件处理 图形用户界面AWT组件学习 应用Swing组件开发图形用户界面 Applet应用程序与图形用户界面介绍

    Java图形界面开发

    Java图形界面(GUI)开发是Java编程中的一个重要领域,它允许开发者创建用户友好的、交互式的桌面应用程序。在Java中,我们通常使用JavaFX或Swing库来构建GUI。然而,传统的GUI编程方式需要手动编写大量的代码来创建...

    java 图形界面 图形界面

    Java Swing 是一个用于创建图形用户界面(GUI)的开发工具包,它是 Java Foundation Classes (JFC) 的一部分。Swing 提供了丰富的组件集,包括按钮、文本框、列表、表格等,允许开发者创建功能丰富的桌面应用程序。 ...

    java图形界面迷宫问题

    1. 游戏开发:Java图形界面迷宫问题可以用于开发迷宫游戏,例如寻找隐藏的宝石或逃离迷宫。 2. 机器人导航:Java图形界面迷宫问题可以用于机器人导航,例如机器人如何避免障碍物并找到目标位置。 3. 智能家居:Java...

    简单JAVA语言编写的万年历系统源码(图形界面)

    这是一个基于JAVA语言开发的简单万年历系统,专为初学者设计,特别是那些正在学习JAVA编程的人。这个项目采用图形用户界面(GUI)提供直观的交互体验,使得查看日期和进行日期计算变得轻松易行。源码中包含了详细的...

    Java实现简单日历小程序 Java图形界面小日历开发

    Java是当前最流行的编程语言之一,广泛应用于Android应用开发、Web开发、企业软件开发等领域。Javaswing是Java提供的一种图形用户界面(GUI)工具包,能够帮助开发者快速创建跨平台的图形界面应用程序。本文将介绍...

    java.swing图形界面开发与案例详解源程序

    《Java Swing图形界面开发与案例详解》几乎涵盖了目前Java Swing图形开发必备的所有常用知识,拥有丰富的实例,且这些实例均来自于工程实践,《Java Swing图形界面开发与案例详解》适合Java程序语言的初学者阅读,也...

    java图形界面时钟

    Java图形界面时钟是一种利用Java编程语言开发的GUI(图形用户界面)应用程序,它能够模拟现实世界中的机械钟,展示当前的时间。...对于想要学习Java图形界面开发的人来说,这是一个很好的实践项目。

Global site tag (gtag.js) - Google Analytics