高仿QQUI界面

来源:互联网 发布:年月日时干支推算法 编辑:程序博客网 时间:2024/05/17 20:51

JAVA 编程是一个面向对象的过程,要制作简单的UI界面,首先要了解类与对象的概念,以及啥是面向对象,面向过程。

1.什么是类、对象

 在生活中,要具体说什么是类,可能很多人都说不出来。一提到类,大多数人想到的都是人类呀,动物类呀以及植物类等等比较抽象的事物。那要如何区分动物类,植物类,人类呢?要区分具体的类要根据类的具体特征。看是不是符合某个类的特征。在JAVA中也是一样,JAVA中,类是指一些拥有共同属性特征的对象的集合。在安装玩jdk后会有一些内置的类不需要我们定义,可以通过引用对应的包使用对应的类对象。那什么是对象呢?对象指的是一些具体的物体,比如周杰伦呀,这个杯子,让人能够清楚知道的具体物体。在java中要使用某个类的方法、属性必须建立相应的类对象。

2.什么是面向对象、面向过程

从字面理解,面向就是面对,关注的意思,那么面向对象就是面对对象、关注对象,关注的重点在对象上,那么面向过程就是关注的重点在过程上。

3.在设计UI界面时,要了解一些必要的组件的应用,以及简单的布局

组件:按钮(JButton)标签(JLabel)文本框(JTexField)等等

布局:流动布局(FlowLayout)组件从左至右,从上至下排列,当行满了自动到下一行

          边框布局(BorderLayout)窗体分为东南西北中五个部分,布局时指定相应的位置,默认为中。

          绝对布局(null)通过指定固定的坐标位置实现组件排列。

等等

在设置好简单的UI界面后,点击按钮会没有反应,那是因为没有添加监听器。那什么是监听器呢?

4.什么是监听器?

java语言中的监听器相当于现实生活中农的监视器,适用于监视窗口中各组件的活动(比如按钮的点击、双击,窗口的拖动等等,),以便做出各种反应。

监听器:监视器(监视一些事物的动作)

作用:用于监听窗体上一些组件的动作

使用方式:把一些逻辑(窗体关闭、窗体最小化、窗体移动、按钮点击等动作)通过事件的触发来执行

5.有哪些监听器?

Java当中,监听器有哪些?监听器的类如下:

从属包:java.awt.event包下

监听器:鼠标监听器:MouseListener    MouseMotionListener  

主要监听器的是鼠标的相关动作(按下、释放、点击、移动、拖动等等)

窗体拖动上、窗体关闭、最小化等等

事件监听器:ActionListener(监听事件有没有触发),用于按钮的事件监听。

键盘监听器 KeyListener

用于接收键盘事件(击键)。


6.简单的UI界面

LoginFrame.java

//引用包
import javax.swing.JFrame;import java.awt.BorderLayout;import javax.swing.JButton;import javax.swing.JPanel;import javax.swing.JLabel;import javax.swing.ImageIcon;import javax.swing.JTextField; import javax.swing.JCheckBox; import java.awt.event.MouseListener;import java.awt.event.MouseEvent;import java.awt.event.MouseMotionListener;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import javax.swing.JOptionPane;import java.awt.Point;public class LoginFrame{public static int x=0,y=0;   public static void main(String[] args){     //1.创建窗体对象JFrame     JFrame jf =new JFrame();     //设置窗体大小     jf.setSize(428,400);     //设置窗体位置     jf.setLocationRelativeTo(null);     //设置窗体默认关闭操作     jf.setDefaultCloseOperation(3);     //去除当前窗体的默认标题栏     jf.setUndecorated(true);     //设置窗体的布局,为边框布局     BorderLayout bl= new BorderLayout();     jf.setLayout(bl);          //往窗体上添加一个面板     JPanel panel = new JPanel();     panel.setBackground(java.awt.Color.white);     jf.add(panel,BorderLayout.CENTER);     //设置panel的绝对布局     panel.setLayout(null);     //在窗体上放置一个大图片     ImageIcon image1 = new ImageIcon("image/GIF.gif");     JLabel label = new JLabel(image1);     jf.add(label,BorderLayout.NORTH);     //在窗体底部添加各种组件     ImageIcon imageHead = new ImageIcon("image/head_log.jpg");     JLabel labelHead = new JLabel(imageHead);     //设置图片的位置     labelHead.setBounds(50,30,80,80);     panel.add(labelHead);      //在下面的面板添加输入框     JTextField jtf1 = new JTextField();     JTextField jtf2 = new JTextField();     jtf1.setBounds(170,30,180,24);     jtf2.setBounds(170,54,180,24);     panel.add(jtf1);     panel.add(jtf2);     //添加复选框     JCheckBox box1 = new JCheckBox("记住密码");     JCheckBox box2 = new JCheckBox("自动登录");     box1.setBounds(170,80,80,23);     box2.setBounds(260,80,80,23);     panel.add(box1);     panel.add(box2);     //添加按钮     JButton button1 = new JButton("登录"); button1.setBackground(java.awt.Color.blue); button1.setForeground(java.awt.Color.white);     button1.setBorderPainted(false);     button1.setBounds(170,110,180,25); panel.add(button1); //添加label JLabel label1 = new JLabel("注册账号"); JLabel label2= new JLabel("找回密码"); label1.setForeground(java.awt.Color.blue); label2.setForeground(java.awt.Color.blue);     label1.setBounds(350,30,100,25);     label2.setBounds(350,54,100,25);     panel.add(label1);     panel.add(label2);     //设置窗体可见     jf.setVisible(true);  //添加事件监听 MouseListener mouse = new MouseListener(){ public void mouseClicked(MouseEvent e){ //实现窗体的点击动作(窗体关闭、最小化) //确认当前点击的位置(x,y) int x=e.getX(); int y=e.getY(); if(x>400&&y<20){ //关闭窗体 System.exit(0); }else if(x>370&&x<400&&y<20){ //设置窗体最小化到任务栏 jf.setExtendedState(1); }else if(x>340&&x<370&&y<20){ new HttpFrame(); //隐蔽登录窗体 jf.dispose(); } } public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mousePressed(MouseEvent e){ x = e.getX(); y = e.getY(); } public void mouseReleased(MouseEvent e){} };  MouseMotionListener mouseMotion = new MouseMotionListener(){ public void mouseDragged(MouseEvent e){ int mouse_x = e.getX(); int mouse_y = e.getY(); //获取当前窗体的当前位置,jf来获取,得到一个点对象 Point point = jf.getLocation(); //获取当前点的x和y属性值 int frame_x = (int)point.getX(); int frame_y = (int)point.getY(); jf.setLocation(frame_x+mouse_x-x,frame_y+mouse_y-y); } public void mouseMoved(MouseEvent e){} }; ActionListener action = new ActionListener(){ public void actionPerformed(ActionEvent e){ //获取文本框的内容 String name = jtf1.getText(); String pwd = jtf2.getText(); if(name.equals("admin")&&pwd.equals("admin")){ //创建窗体对象JFrame JFrame chatFrame = new JFrame(); chatFrame.setSize(500,500); chatFrame.setDefaultCloseOperation(3); chatFrame.setVisible(true); //隐蔽登录窗体 jf.dispose(); }else{ //弹出提示框 JOptionPane.showMessageDialog(null,"登录失败"); } } };  label.addMouseListener(mouse); label.addMouseMotionListener(mouseMotion); button1.addActionListener(action);        }}

HttpFrame.java设置为流体布局,显示较为杂乱

import javax.swing.*;import java.awt.*;public class HttpFrame{    HttpFrame(){       //1.创建窗体对象JFrame     JFrame jf =new JFrame();  //构建需要的组件 JComboBox jcb1,jcb2,jcb3; //初始化 jcb1 = new JComboBox();  jcb1.addItem("不使用代理"); jcb1.addItem("Http代理"); jcb1.addItem("socks5代理"); jcb1.addItem("使用浏览器设置"); jcb2 = new JComboBox(); jcb2.addItem("不使用高级设置"); jcb2.addItem("UDP类型"); jcb2.addItem("TCP类型"); jcb3 = new JComboBox();  //添加组件 jf.setLayout(new FlowLayout()); jf.add(new JLabel("网络设置")); jf.add(new JLabel("类型:")); jf.add(jcb1); jf.add(new JLabel("地址:")); jf.add(new JTextField(8)); jf.add(new JLabel("端口:")); jf.add(new JTextField(4)); jf.add(new JLabel("用户名:")); jf.add(new JTextField(10)); jf.add(new JLabel("密码:")); jf.add(new JTextField(8)); jf.add(new JLabel("域:")); jf.add(new JTextField(4)); jf.add(new JButton("测试")); jf.add(new JLabel("登录服务器")); jf.add(new JLabel("类型:")); jf.add(jcb2); jf.add(new JLabel("地址:")); jf.add(jcb3); jf.add(new JLabel("端口:")); jf.add(new JTextField(4)); jf.add(new JButton("确定")); jf.add(new JButton("取消"));     //设置窗体大小     jf.setSize(428,400); jf.setResizable(false);     //设置窗体位置     jf.setLocationRelativeTo(null);     //设置窗体默认关闭操作     jf.setDefaultCloseOperation(3); jf.setVisible(true);    }}