SWING界面开发(API文档的使用)¬¬¬
1.swing组件
构建界面的类,系统封装的类。
如果用到需引进它所在的包(打包快捷键ctrl+shift+o)
所在的包 javax.swing
java.awt
2.常用的swing组件
1.容器组件:
JFrame(窗体) 顶级容器 (JPanel,元素组件)
JPanel(面板) 容器 (JPanel,元素组件)
2.元素组件:
JButton(按钮)//可以添加图片
JLabel(标签)//字符串,可以添加图片
JComboBox(组合框)
JPasswordField(密码输入框)
JCheckBox(复选框)
JTextField (文本输入框)
打包快捷键ctrl+shift+O
3.布局(常用)
1) 边框布局BorderLayout
2) 流布局FlowLayout
3) 绝对布局 (空布局) setLayout(null)
4.API文档的使用(eclipse的编程)
用法:若知道类名,可以搜索到这个类,再找方法名(快捷键ctrl+F);或者根据程序的功能在网上搜索方法和类,再在API文档中查找方法说明和代码。
5.对封装的理解
封装就是把属性和方法一起包装到一个程序单元中,并隐藏方法的实现过程,这个程序单元以类的形式实现。
封装的含义:1)隐藏内部行为,即隐藏内部函数,调用者只能看到对外提供的公共函数
2)隐藏内部信息,即隐藏内部数据成员
封装的作用:1)可以隔离变化
原因对象内部容易变化,如计算机中把CPU和内存封装起来,对外提供接口,只要接口不变,内部的变化不会影响到用户的使用方式。
2)可以提高易用性
封装后只暴露最少的信息给用户,对外接口清晰,使用更方便。
6.项目实例来说明
package swing界面;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class GUI {
public static void main(String[] args) {
GUI ui = new GUI();
//使用对象调用方法
ui.initUI();
}
//定义创建界面的方法
public void initUI(){
//创建窗体对象
JFrame jf = new JFrame();
//设置标题
jf.setTitle("QQ");
//设置窗体的大小
jf.setSize(405, 302);
//设置默认的关闭操作
jf.setDefaultCloseOperation(3);
//设置窗体的布局为绝对布局
jf.setLayout(null);
//实例化按钮对象
JButton btn1 = new JButton("登录");
//设置按钮的位置和大小
btn1.setBounds(180, 230, 60, 30);
//把按钮添加到窗体上
jf.add(btn1);
ImageIcon image = new ImageIcon("F:\\编程图片专用\\juejian.jpg");
//实例化一个JLabel的标签对象,该对象现实一张图片
JLabel j1 = new JLabel(image);
//设置图片标签的位置
j1.setBounds(20, 73, 100, 100);
jf.add(j1);
//新建一个ImageIcon的对象,在对象中添加一个图片的路径
ImageIcon im = new ImageIcon("F:\\编程图片专用\\f.jpg");
//实例化一个Button的标签对象,该对象现实一张图片
JButton btn2 = new JButton(im);
btn2.setBounds(38,230,41,36);
jf.add(btn2);
//新建一个ImageIcon的对象
ImageIcon ima = new ImageIcon("F:\\编程图片专用\\s.jpg");
JButton btn3 = new JButton(ima);
btn3.setBounds(320,230,43,39);
jf.add(btn3);
//设置背景图片
ImageIcon icon = new ImageIcon("F:\\编程图片专用\\bj.gif");
//创建标签对象
JLabel j2 = new JLabel(icon);
j2.setBounds(0, 0, icon.getIconWidth(), icon.getIconHeight());
//把标签添加在JFrame的添加背景层
jf.getLayeredPane().add(j2, new Integer(Integer.MIN_VALUE));
//把JFrame 的上层设置为透明
JPanel jp = (JPanel)jf.getContentPane();
jp.setOpaque(false);
//实例化标签对象
JLabel jl = new JLabel("注册账户");
JLabel jl1 = new JLabel("输入密码");
JLabel jl2 = new JLabel("记住密码");
JLabel jl3 = new JLabel("自动登录");
//设置标签的位置和大小
jl.setBounds(256,85, 60, 20);
jl1.setBounds(256,115,60,20);
jl2.setBounds(160,140,60,20);
jl3.setBounds(230,140,60,20);
jf.add(jl2);
jf.add(jl3);
jf.add(jl1);
jf.add(jl);
//实例化组合框对象
javax.swing.JComboBox jc3 = new javax.swing.JComboBox();
//使组合框可以输入
jc3.setEditable(true);
//设置组合框的大小
jc3.setBounds(150,80,100,20);
jf.add(jc3);
//创建密码输入框
javax.swing.JPasswordField jp1=new javax.swing.JPasswordField();
jp1.setBounds(150,110,100,20);
jf.add(jp1);
//创建复选框
javax.swing.JCheckBox jc1=new javax.swing.JCheckBox();
javax.swing.JCheckBox jc2=new javax.swing.JCheckBox();
jc1.setBounds(140,145,16,15);
jc2.setBounds(214,145,16,15);
jf.add(jc2);
jf.add(jc1);
//使窗体可见
jf.setVisible(true);
}
}
简单计算器
package 简单登录界面;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
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 GUI {
public static void main(String args[]){
GUI ui=new GUI();
ui.initUI();
}
public void initUI(){
//创建一个窗体对象
JFrame jf=new JFrame("计算器");
//设置窗体的大小
jf.setSize(new Dimension(370,390));
//设置关闭时的操作
jf.setDefaultCloseOperation(3);
//设置窗体出现的位置为屏幕的中间
jf.setLocationRelativeTo(null);
//创建菜单栏对象
JMenuBar menuBar = new JMenuBar();
//把菜单栏添加在菜单上
jf.setJMenuBar(menuBar);
//创建菜单对象
JMenu menuV= new JMenu("查看(V)");
JMenu menuE = new JMenu("编辑(E)");
JMenu menuH = new JMenu("帮助(H)");
//把菜单添加在菜单栏上
menuBar.add(menuV);
menuBar.add(menuE);
menuBar.add(menuH);
//这个菜单为menuV的下一级菜单
JMenu menuVw= new JMenu("工作表(W)");
menuV.add(menuVw);
//创建menuVw的菜单项
String array1 []={"抵押(M)","汽车租赁(V)","油耗(mpg)(F)",
"油耗(1/100km)(U)"};
for(int i=0;i<array1.length;i++){
JMenuItem itemW= new JMenuItem(array1[i]);
menuVw.add(itemW);
}
//把数组存放菜单项,用循环语句创建菜单项对象
String array2 []={"标准型(T) Alt+1","科学型(S) Alt+2",
"程序员(P) Alt+3","统计信息(A) Alt+4","历史记录 ctrl+N",
"数字分组(I)","基本(B) ctrl+f4","单位转换(U) ctrl+U",
"日期计算(D) ctrl+E"};
for(int j=0;j<array2.length;j++){
JMenuItem itemV= new JMenuItem(array2[j]);
menuV.add(itemV);
}
//创建menuE的菜单项
JMenuItem C = new JMenuItem("复制 ctrl+C");
JMenuItem V =new JMenuItem ("粘贴 ctrl+V");
JMenuItem N= new JMenuItem("历史记录 ctrl+N");
menuE.add(C);
menuE.add(V);
menuE.add(N);
//创建menuH的菜单项
JMenuItem F1 = new JMenuItem("关于帮助(V) F1");
JMenuItem A1 = new JMenuItem("关于计算器(A)");
menuH.add(F1);
menuH.add(A1);
/**
* 窗体默认的布局为边框布局
* 用面板把窗体分为北,西,东三部分
* 北边面板放文本输入框
* 西边和东边采用流布局添加按钮
* 面板默认的布局方式为流布局
* 用数组存放按钮,for循环创建对象
* 和其他按钮的大小不同的用if条件语句判断
*/
JPanel jpNorth = new JPanel ();
JPanel jpWest = new JPanel ();
JPanel jpEast = new JPanel ();
jpNorth.setPreferredSize(new Dimension(0,70));
jpEast.setPreferredSize(new Dimension(85,0));
jpWest.setPreferredSize(new Dimension(285,0));
//东边面板流布局,左对齐,每个按钮之间的水平距离和竖直距离
jpEast.setLayout(new FlowLayout(FlowLayout.RIGHT,0,6));
//西边面板流布局,左对齐,每个按钮之间的水平距离和竖直距离
jpWest.setLayout(new FlowLayout(FlowLayout.LEFT,9,6));
jf.add(jpNorth,BorderLayout.NORTH);
jf.add(jpWest,BorderLayout.WEST);
jf.add(jpEast,BorderLayout.EAST);
//创建文本输入框对象
JTextField jt=new JTextField();
jt.setPreferredSize(new Dimension(340,80));
jpNorth.add(jt);
//创建东边面板上按钮的对象
String array3[]={"M-","√","%","1/x","=", };
for(int k=0;k<array3.length;k++){
JButton buttonE=new JButton(array3[k]);
if(k<4){
buttonE.setPreferredSize(new Dimension(62,35));
}
else{
buttonE.setPreferredSize(new Dimension(62,75));
}
jpEast.add(buttonE);
}
//创建西边面板上 按钮的对象
String array4[]={"MC","MR","MS","M+"," ","CE","C","±",
"7","8","9", "/","4","5","6","*","1","2","3",
"-","0",".","+"};
for(int m=0;m<array4.length;m++){
JButton buttonW=new JButton(array4[m]);
if(m==20){
buttonW.setPreferredSize(new Dimension(130,35));
}
else{
buttonW.setPreferredSize(new Dimension(62,35));
}
jpWest.add(buttonW);
}
//使窗体显现出来
jf.setVisible(true);
}
}
运行结果