`
kang_sun
  • 浏览: 3334 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

03_界面开发

 
阅读更多

 一:绘制图形界面的两套工具包

 

1)awt

      1.awt是Abstract Window Toolkit(抽象组件窗口工具包)的缩写,是java最早的(JDK1.4之前)用于编写图形界面应用程序的开发包。

      2.我们通常称awt控件为重量级控件,awt的代码由c/c++以及java构成。

      3.也就是说,它所使用的图形组件是基于本地操作系统的图形库,绘制出的图形不具有跨平台性,操作系统不同时,绘制出的图形很有可能不同而引起混乱。

 

2)swing

     1.swing是在awt的基础上构建的一套新的图形界面系统,在JDK1.4版本之后出现。

     2.我们通常称swing控件为轻量级控件,swing控件完全是由100%java代码实现的。

     3.由swing控件绘制出的图形,真正实现了java跨平台的特性,与本地操作系统的图形库没有任何联系。

 

3)区别:awt是基于本地方法的c/c++程序,其运行速度较快。

                swing是基于awt的java程序,其运行速度比较慢。

 

ps:以上区别较简略,更详细的讨论请见http://www.douban.com/group/topic/3360549/

 

二:常用的组件

 

1)容器组件

     1.JFrame        (窗体类)    顶级容器

     2.Jpanel         (面板类)     最灵活的容器

     3.JMenuBar   (菜单栏)

     4.JMenu         (菜单项)

 

2)元素组件

     1.JLabel                  (标签)

     2.JComboBox          (下拉框)

     3.JTextField             (输入框)

     4.JMenuItem            (菜单)

     5.JCheckBox           (复选框)

     6.JButton                 (按钮)

     7.JPasswordField    (密码输入框)

 

ps:以上类名均为"J+名称",表示是属于javax.swing包下的类;若只有"名称",则表示是java.awt包下的类。

 

三:常用的布局

 

1)BorderLayout  (边框布局)

2)GridLayout      (网格布局)

3)FlowLayout      (流式布局)

 

ps:在javax.swing和java.awt包下的所有以Layout结尾的类都是布局类,以上三种只是使用较为频繁。

 

四:界面实现

1)QQ登陆界面

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;

public class QQlanding {

	/**
	 * QQ登陆
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		QQlanding qq = new QQlanding();
		qq.window();

	}
	
	public void window() {

		JFrame win = new JFrame("QQ登陆");// 实例化窗口对象并对标题命名
		win.setSize(379, 260);// 设置窗口大小
		win.setResizable(false);// 不可调节窗口大小
		win.setLocationRelativeTo(null);// 窗口出现在屏幕中央
		win.setDefaultCloseOperation(3);// 按叉关闭程序

		win.setLayout(new BorderLayout());

		// 设置北方
		JPanel North = new JPanel();
		North.setPreferredSize(new Dimension(379, 117));
		win.add(North, BorderLayout.NORTH);

		// 设置西方
		JPanel West = new JPanel(new FlowLayout(FlowLayout.RIGHT, 0, 0));
		JLabel West1 = new JLabel(new ImageIcon("picture/qqlanding/qie.jpg"));
		West.setPreferredSize(new Dimension(100, 0));
		West.add(West1);
		win.add(West, BorderLayout.WEST);

		// 设置中间
		JPanel Center = new JPanel();
		Center.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 6));
		JComboBox Text1 = new JComboBox();
		Text1.setPreferredSize(new Dimension(649,25));
		Text1.setEditable(true);
		Text1.addItem("562828767");
		JPasswordField Text2 = new JPasswordField(16);
		JCheckBox Box1 = new JCheckBox("记住密码");
		JCheckBox Box2 = new JCheckBox("自动登录");
		Box1.setOpaque(false);
		Box2.setOpaque(false);
		Center.add(Text1);
		Center.add(Text2);
		Center.add(Box1);
		Center.add(Box2);
		win.add(Center, BorderLayout.CENTER);

		// 设置东方
		JPanel East = new JPanel();
		East.setPreferredSize(new Dimension(105, 0));
		East.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 6));
		JLabel button1 = new JLabel("注册账号");
		JLabel button2 = new JLabel("找回密码");
		button1.setOpaque(false);
		button2.setOpaque(false);
		button1.setPreferredSize(new Dimension(100, 22));
		button2.setPreferredSize(new Dimension(100, 22));
		East.add(button1);
		East.add(button2);
		win.add(East, BorderLayout.EAST);

		// 设置南方
		JPanel South = new JPanel();
		JButton button3 = new JButton("登录");
		button3.setPreferredSize(new Dimension(95, 22));
		South.add(button3);
		win.add(South, BorderLayout.SOUTH);

		// 设置背景
		ImageIcon background = new ImageIcon("picture/qqlanding/backgroung.jpg");
		JLabel background2 = new JLabel(background);
		background2.setBounds(0, 0, background.getIconWidth(), background.getIconHeight());
		win.getLayeredPane().add(background2, new Integer(Integer.MIN_VALUE));
		Container P4 = win.getContentPane();
		
		//JComponent
		// 顶层设置透明
		((JPanel) P4).setOpaque(false);
		West.setOpaque(false);
		Center.setOpaque(false);
		East.setOpaque(false);
		South.setOpaque(false);
		North.setOpaque(false);

		win.setVisible(true);// 设置窗口为可见

	}

}

 

2)计算器界面

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Calculator {

	/**计算器界面
	 * @param args
	 */
	public static void main(String[] args) {
		//211 283
		Calculator Cal = new Calculator();
		Cal.window();
		

	}
	
	public void window(){
		
		JFrame JF = new JFrame("计算器");					//标题
		JF.setSize(208,308);								//大小
		JF.setResizable(false);								//大小不可变
		JF.setLocationRelativeTo(null);						//出现在中间
		JF.setDefaultCloseOperation(3);						//按叉
		
		JF.setLayout(new BorderLayout());
		
		JMenuBar JMB = new JMenuBar();
		JMenu JM1 = new JMenu("查看(V)");  				//加菜单栏
		JMenuItem JMI1 = new JMenuItem("科学型");		//加菜单项
		JMenuItem JMI2 = new JMenuItem("等等等");
		JM1.add(JMI1);
		JM1.add(JMI2);
		JMenu JM2 = new JMenu("编辑(E)");
		JMenu JM3 = new JMenu("帮助(H)");
		JMB.add(JM1);
		JMB.add(JM2);
		JMB.add(JM3);
		JF.setJMenuBar(JMB);
		
		//北方
		JTextField NJT = new JTextField("0");
		NJT.setHorizontalAlignment(JTextField.RIGHT);
		NJT.setPreferredSize(new Dimension(190,57));
		NJT.setFont(new Font("Arial",Font.BOLD,36));
		NJT.setEditable(false);
		JF.add(NJT,BorderLayout.NORTH);
		
		//东方
		JPanel E_JP = new JPanel();
		E_JP.setPreferredSize(new Dimension(44,0));
		String[] eimg = {"picture/calculator/m-.jpg","picture/calculator/genhao.jpg",
				"picture/calculator/%.jpg","picture/calculator/daoshu.jpg",
				"picture/calculator/=.jpg"};
		for(int j=0;j < eimg.length;j++){
			ImageIcon Ima = new ImageIcon(eimg[j]);
			JButton Jbu = new JButton(Ima);
			Jbu.setPreferredSize(new Dimension(Ima.getIconWidth(),Ima.getIconHeight()));
			E_JP.add(Jbu);		
		}
		JF.add(E_JP,BorderLayout.EAST);
		
		//中间
		JPanel C_JP = new JPanel();
		C_JP.setPreferredSize(new Dimension(160,0));
		String[] cimg = {"picture/calculator/mc.jpg","picture/calculator/mr.jpg",
				"picture/calculator/ms.jpg","picture/calculator/m+.jpg",
				"picture/calculator/jiantou.jpg","picture/calculator/ce.jpg",
				"picture/calculator/c.jpg","picture/calculator/+-.jpg",
				"picture/calculator/7.jpg","picture/calculator/8.jpg",
				"picture/calculator/9.jpg","picture/calculator/chu.jpg",
				"picture/calculator/4.jpg","picture/calculator/5.jpg",
				"picture/calculator/6.jpg","picture/calculator/cheng.jpg",
				"picture/calculator/1.jpg","picture/calculator/2.jpg",
				"picture/calculator/3.jpg","picture/calculator/-.jpg",
				"picture/calculator/0.jpg","picture/calculator/+.jpg",
				"picture/calculator/+.jpg"};
		for(int i = 0;i < cimg.length ; i++){
			
//			(1)第一种方法
//			JButton Jbu = new JButton(new ImageIcon(cimg[i]));
//			if(cimg[i] == "picture/calculator/0.jpg"){
//				Jbu.setPreferredSize(new Dimension(73,27));
//			}else{
//				Jbu.setPreferredSize(new Dimension(34,27));
//			}
//			(2)第二种方法
			ImageIcon Ima = new ImageIcon(cimg[i]);
			JButton Jbu = new JButton(Ima);
			Jbu.setPreferredSize(new Dimension(Ima.getIconWidth(),Ima.getIconHeight()));
			C_JP.add(Jbu);
			
		}
		JF.add(C_JP,BorderLayout.CENTER);
		
		
		JF.setVisible(true);		
		
		
		
		
	}

}

 

  • 大小: 38.1 KB
  • 大小: 22 KB
分享到:
评论

相关推荐

    mmwave_sdk_03_04_00_03-Windows-x86-Install.rar

    - **开发工具**:例如图形用户界面(GUI)工具,用于配置雷达参数、显示数据和调试系统。 2. **应用示例**: - SDK中通常会附带多个演示示例,帮助开发者了解如何使用API和库进行基本操作,如雷达初始化、数据采集...

    Simatic_EKB_Install_2012_03_08

    通过这个安装包,用户可以获取到最新的技术支持,帮助他们更有效地进行项目开发和故障排查。 在安装Simatic EKB 2012_03_08时,用户需要注意以下几点: 1. **系统要求**:确保你的计算机操作系统符合Step 7 5.5的...

    ch03_android开发_

    在Android开发领域,Android Studio是主流的集成开发环境(IDE),它为开发者提供了丰富的功能来构建高质量的应用程序。本章节将深入探讨如何在Android Studio中使用Button和文字框(EditText和TextView)进行交互式...

    Sim_EKB_Install_2018_03_10.rar

    TIA Portal V14是该平台的一个重要版本,它提供了统一的用户界面,涵盖了PLC编程(如S7-1200/1500系列)、HMI(人机界面)、运动控制、工业网络配置等多个方面,极大地提高了工程效率。 2. **STEP 7**: STEP 7是...

    openjdk-8-src-b132-03_mar_2014-windows-native.zip

    - **图形界面**:AWT和Swing库的部分功能依赖于Windows Native代码,如窗口管理、事件处理等。 6. **调试和优化** 开发和调试Windows Native代码通常需要配合Visual Studio或其他C/C++编译器,使用Windbg或JDB等...

    Sim_EKB_Install_2016_03_12.rar

    在很多情况下,软件会包含训练或教程部分,帮助用户熟悉界面、功能和操作流程。Sinutrain可能就是这样一种工具,专为Sim_EKB用户提供操作指导和实战练习。 总的来说,这个压缩包可能包含了Sim_EKB软件的安装文件...

    VRay_Adv_3.20.03_for_3dsMax2014(64bit)

    VRay是由Chaos Group开发的一款强大的渲染引擎,它是一款广泛应用于建筑可视化、产品设计、电影电视制作等领域的专业渲染插件。在3ds Max这款三维建模软件中,VRay以其出色的光线追踪、全局光照、材质系统和高效的...

    VRay_Adv_2.40.03_for_3dsMax2013(32bit)

    【VRay for 3ds Max 2.40.03 简介】 VRay是由 Chaos Group 开发的一款强大的渲染引擎,专为3D建模软件3ds Max设计。这款插件以其卓越的光线追踪技术和全局光照算法,为设计师和艺术家提供了高质量的图像渲染解决...

    Android开发_03_手机安全卫士(day26-day38)

    全套Android开发视频,请去此资源所在专辑,内有全部视频!!!!!

    VRay_Adv_2.40.03_for_3dsMax2014(64bit)

    VRay是由Chaos Group开发的一款基于物理计算的渲染引擎,其特点是真实感渲染,能够模拟光线的物理行为,从而产生逼真的图像效果。它不仅支持3ds Max,还与其他多个3D软件平台兼容,如Maya、SketchUp等。 二、VRay ...

    佳艺田P12. BFC03_93.ZM(OS51)_V9.9_JYTMTK_20150209密码cyyx.zip

    WinCE是一个实时操作系统,提供了丰富的API接口和开发工具,使得开发者可以定制各种功能和界面,以满足不同设备的需求。 BFC03_93.ZM可能是该固件版本的内部代号,代表了特定的硬件配置或软件特性。OS51可能指的是...

    西门子最新PLC软件授权_Simatic_EKB_Install_2012_03_08

    总的来说,西门子Simatic EKB Install 2012_03_08是西门子PLC用户的重要工具,它提供了一个完整的开发、调试和维护环境,使用户能够高效地进行自动化项目工作。通过这个安装包,用户可以充分利用西门子的先进技术和...

    3. 高级界面开发2Command事件和List1.rar

    在J2ME(Java 2 Micro Edition)平台上进行高级界面开发时,Command事件和List组件是构建用户交互界面的关键元素。本教程旨在深入探讨这两个核心概念,帮助开发者掌握如何有效地利用它们来创建功能丰富的移动应用。 ...

    JAVAWEB_项目开发_网上订餐系统2018_03_16

    《JAVAWEB项目开发:网上订餐系统详解》 在信息技术日新月异的今天,JAVAWEB技术在企业级应用开发中扮演着重要角色。本项目以"网上订餐系统"为例,深入剖析JAVAWEB的开发过程,帮助开发者了解如何构建一个实用的、...

    JAVAWEB_项目开发_网上订餐系统-CSDN下载.2018_03_16

    《JAVAWEB项目开发:网上订餐系统详解》 在信息技术日新月异的今天,JAVAWEB技术在企业级应用开发中扮演着重要角色。本项目——"网上订餐系统",就是利用JAVAWEB技术构建的一个实用案例,旨在帮助开发者理解和掌握...

    OpenQVis_cvs_19_03_2003.tar

    这个档案包含了一系列的文件,它们构成了OpenQVis的核心功能和开发资源。 在量子计算领域,可视化是理解和学习的重要工具。OpenQVis通过图形化界面展示量子比特的态演化、量子门操作以及量子电路的结构,使非专业...

    stm32f03_la_monitor-master.rar

    1. 微控制器固件:实现了电压采集、处理和显示的算法,可能使用了STM32CubeMX或HAL库进行开发。 2. 驱动程序:针对LMH7324的初始化和控制代码。 3. 用户界面:如果有的话,可能是一个简单的命令行界面或通过USB连接...

    vray2014_2.40.03_x64_cn

    例如,2.40.03可能包含对渲染速度的提升,对某些特定材质的增强,或者对用户界面的改进,以提高工作效率。 在提供的压缩文件中,我们可以看到三个部分组成的安装程序: 1. CH_VRay_Adv_2.40.03_for_3dsMax2014(64...

    Gaoen_WCF_foreignecf_dx_DXWinForm架构_client.exe.2020_03__

    在这个压缩包中,"client.exe.2020_03_"很可能是该框架的客户端应用程序,它使用了DXWinForm控件来构建用户界面,并通过WCF服务与服务器进行交互。开发者可以通过这个客户端来了解如何集成DX控件并利用WCF服务实现...

    20_03_11_gameReviews-源码.rar

    不过,根据常见的游戏评论系统,我们可以推测可能涉及到的标签有:游戏分析、用户接口设计、数据库管理、后端开发(如Java, Python, C#)、前端开发(HTML, CSS, JavaScript, React, Angular)、API接口、数据分析、...

Global site tag (gtag.js) - Google Analytics