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);// 设置窗口为可见

	}

}

03_界面开发 

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);		
		
		
		
		
	}

}

 03_界面开发

你可能感兴趣的:(开发)