系统学习JAVA前的热身
来源:互联网 发布:网络作家道三生 编辑:程序博客网 时间:2024/06/01 15:34
java是一门面向对象的编程。面向对象,顾名思义,可以理解为关注对象,关注的重点在对象上。我们可以从生活的角度来理解:生活中的任何一件事=对象(执行者)+过程(执行流程)。面向对象就是生活中发生了一件事,我们作为旁观者的角度,更加关注的是对象。而面对过程就我们作为旁观者更加关注的是过程。我们在生活中更多的是面对对象的。
在java的语法中我们要先有类再有对象,那么类和对象我们怎么理解呢。我们也可以从生活的角度来理解,类:一些对象的共同点集合,是抽象性的。对象:生活中一个个的实体,是具体的物体。而且我们要记得对于执行某件事情的执行者,一定是对象而不能是类。
c++,java是面向对象的编程语言,c是面向过程的语言。面向对象的编程结果存在不确定性的,而面向过程的编程结果是确定的。面向对象的编程有三大特性:继承性,封装性,多态性。
随后我们编写了一个仿制QQ的登录界面。
import javax.swing.JFrame;import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JCheckBox;
import javax.swing.JButton;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.Point;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JOptionPane;
public class UI{
public static int x=0,y=0;
public static void main(String args[]){
//1.创建一个窗体
JFrame jf=new JFrame();
//3.设置窗体大小
jf.setSize(428,380);
//4.设置窗体位置
jf.setLocationRelativeTo(null);
//5.设置窗体关闭方式
jf.setDefaultCloseOperation(3);
//6.去除窗体默认边框
jf.setUndecorated(true);
//7.设置窗体布局,为边框布局(会分为上下左右中五个部分)
BorderLayout bl=new BorderLayout();
jf.setLayout(bl);
//8.上半部分放置一个图片
ImageIcon pic=new ImageIcon("GIF.gif");
JLabel label=new JLabel(pic);
jf.add(label,BorderLayout.NORTH);
//9.下半放置一个面板,设置绝对布局
JPanel panel=new JPanel();
jf.add(panel,BorderLayout.CENTER);
panel.setLayout(null);
//10.面板上放置一个头像图片
ImageIcon pic1=new ImageIcon("head_log.jpg");
JLabel label1=new JLabel(pic1);
label1.setBounds(50,30,80,80);
panel.add(label1);
//面板上放置账号框
JTextField jtf=new JTextField();
jtf.setBounds(170,30,180,30);
panel.add(jtf);
//放置密码框
JTextField jtf1=new JTextField();
jtf1.setBounds(170,70,180,30);
panel.add(jtf1);
//放置复选框
JCheckBox jcb=new JCheckBox("记住密码");
JCheckBox jcb1=new JCheckBox("自动登录");
jcb.setBounds(170,110,100,50);
jcb1.setBounds(270,110,100,50);
panel.add(jcb);
panel.add(jcb1);
//放置登陆键
JButton jb=new JButton("登录");
jb.setBounds(170,160,200,30);
panel.add(jb);
// 放置两个标签
JLabel label2=new JLabel("找回密码");
JLabel label3=new JLabel("注册账号");
label2.setBounds(360,20,100,50);
label3.setBounds(360,50,100,50);
panel.add(label2);
panel.add(label3);
//2.设置窗体可见
jf.setVisible(true);
/*监听器:监视器(监视一些事物的动作)
作用:用于监听窗体上一些组件的动作
使用方式:把一些逻辑(窗体关闭、窗体最小化、窗体移动、按钮点击等动作)通过事件的触发来执行
监听器:鼠标监听器,事件监听器
*/
//创建鼠标监视器对象
MouseListener Mouse=new MouseListener(){
//点击鼠标时
public void mouseClicked(MouseEvent e){
//获取鼠标相对于组件的坐标
x=e.getX();
y=e.getY();
if(x>400&&y<24){
//关闭窗体
System.exit(1);
}
else if(x>370&&x<400&&y<24){
//最小化
jf.setExtendedState(1);
}
}
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 Motion=new MouseMotionListener(){
public void mouseDragged(MouseEvent e){
//获取鼠标相对于组件的坐标
int mouse_X=e.getX();
int mouse_Y=e.getY();
Point point =jf.getLocation();
//获取窗体的绝对坐标
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 text=jtf.getText();
//校验
if(text.equals("admin")){
//设置弹出的窗体
JFrame jf1=new JFrame();
jf1.setSize(500,400);
jf1.setDefaultCloseOperation(3);
jf1.setVisible(true);
//设置原来的窗体关闭
jf.dispose();
}else{
JOptionPane.showMessageDialog(null,"登陆失败");
}
}
};
label.addMouseListener(Mouse);
label.addMouseMotionListener(Motion);
jb.addActionListener(action);
}
}
阅读全文
0 0
- 系统学习JAVA前的热身
- 学习java前的热身--java的小小介绍
- 学习java前的热身--常见DOS命令
- 羽毛球活动前的热身
- [游泳] 游泳前的热身准备
- 学习Java前的准备。
- 学习java前的屁话
- 学习Java前的准备
- 飞前热身---说说MTK平台的芯片分类[转载]
- 学习java安全技术前的准备
- 学习java前一些概念的说明
- (2)java学习前的准备
- 学习java前七天的总结
- java学习前三天
- Linux系统编程学习之《编程前的准备》
- ORACLE系统学习前传
- 黑马程序员——学习Java前的准备、以及Java学习前基本常识总结
- java 当前系统时间的前几秒、前几小时、前几天
- 六个Async/Await取代Promises的原因
- Android textAppearance的属性设置及TextView属性详解
- 阿里云云盘扩容方法
- xtts 检查和日志记录
- 拉格朗日插值法及应用
- 系统学习JAVA前的热身
- HTML5页面被运营商进行DNS劫持问题及解决方案,app中h5页面源码的获取
- jQuery选择器,模糊匹配
- [LeetCode]621. Task Scheduler
- opencv-视频图像的前景动态追踪
- 如何用自定义样式编辑数学公式
- Java学习笔记01
- React ---- 状态管理之React-Redux
- 联发科(9月21)