1. 类如何定义?类中可以定义哪些?
public class 类名{}
主函数定义为public static
类中可以定义类的属性和方法
系统会自动生成一个默认的构造函数,若想在生成对象时带参数,则重载构造函数
属性一般定义为 private ,static是为了让属性能直接用类名调用
方法一般定义为public
public类名必须和文件名相同
public class Student {
/*
* 无参构造函数
*/
public Student(){}
/*
* 带name的构造函数
*/
public Student(String s){name=s;}
/*
* 学生的姓名属性
*/
private String name;
/*
* 学生的学分属性
*/
private int score;
public void print(){
System.out.println(name+"玩的不亦乐乎");
}
|
类中定义了具体对象所共有的属性和方法,类可以生成具体的对象
类是一个自定义的类型
public static void main(String args[]){
Student stu = new Student();
stu.print();
}
3. 构造器与普通方法
创建某个类的对象时,格式:类名 变量名 = new 类名()这里的类名()就是构造器方法
重新定义构造器方法就叫构造器方法的重载,代码如下
/*
* 无参构造函数
*/
public Student(){}
/*
* 带name的构造函数
*/
public Student(String s){name=s;}
|
在一个类中可以定义多个同名,但是参数类型和数量不同的方法叫方法的重载
public class UNstudent extends Student{
/**
* 改写父类的study 方法
*/
public void study(){
System.out.print("大学生担心挂科");
}
}
|
2. this关键字
this在类中用来指代当前调用该方法的对象
public loginlistener(JTextField jt1,JPasswordField jt2){
this.jt1 = jt1;
this.jt2 = jt2;
}
|
在构造器中可以调用构造器
3. 构造器方法和一般方法的区别
1) 构造器方法没有任何返回值的定义
2) 构造器方法是在创建对象的时候自动调用的
1. 框架
///////////////drawFrame//////////////////////
在窗体上建立:
1.菜单栏JMemubar
//加一个jmenubar
javax.swing.JMenuBar bar = new javax.swing.JMenuBar();
this.setJMenuBar(bar);
//加菜单
javax.swing.JMenu jm1 = new javax.swing.JMenu("文件 ");
javax.swing.JMenu jm2 = new javax.swing.JMenu("编辑 ");
javax.swing.JMenu jm3 = new javax.swing.JMenu("查看 ");
//给菜单条加菜单
bar.add(jm1);
bar.add(jm2);
bar.add(jm2);
|
2.工具面板toolpanel
3.颜色面板 colorpanel
4.中间面板centerpanel
在centerpanel上建立:
5.画板面板drawpanel
//在centerpanel里加一个drawpanel
javax.swing.JPanel drawpanel = new javax.swing.JPanel();
centerpanel.add(drawpanel);
是在centerpanel上再加面板drawpanel
|
在窗体上设置
6.设置布局管理器
//给centerpanel加布局管理器
java.awt.FlowLayout centerlay = new java.awt.FlowLayout(java.awt.FlowLayout.LEFT);
centerpanel.setLayout(centerlay);
布局管理器的建立方法
|
7.设置监听器
在窗体上获取
8.画布
2. 功能
1)画直线
public class Line extends Shape{
Line(int x1,int y1,int x2,int y2,Color color){
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
this.color = color;
}
public void draw(Graphics g) {
g.setColor(color);
g.drawLine(x1, y1, x2, y2);
}
取到形状及颜色 绘出直线
|
2)画矩形
3)画椭圆
4)画圆角矩形
3. 关键点
1)如何在两个类中公用一个对象
/**
* 如何在两个类中共用同一个对象
* 为了把另一个类中的对象JTxtFild用到另一个类中 就要在该类中设置参数jt1来接收这个对象
* 所以就需要重载构造函数public loginlistener(JTextField jt1,JPasswordField jt2)
* 来把这个对象JTxtFild 传进来
* 然后才能在类的方法里用到这个共用的对象
*/
|
2)shape多态实现
shape是抽象类 各种形状都继承shape
shape有一个未定义的方法draw
public abstract void draw(java.awt.Graphics g);
|
直线类重写draw
public void draw(Graphics g) {
g.setColor(color);
g.drawLine(x1, y1, x2, y2);
}
|
在listener里
sh =new Line(x1,y1,x2,y2,color);//创建直线形状
|
//把图形画出来
sh.draw(g);
|
用父类的对象调用子类方法是实现了多态
3)重绘队列
首先明确在frame里重绘,而队列是在listener里建立,如何从listener到frame呢?
在frame里实例化队列对象
MyQueue<Shape> shapes= new MyQueue<Shape>();
|
然后通过listener 的构造函数传入
//给画布加鼠标监听器
DrawListener dlis = new DrawListener(g,Group1,Group2,shapes);
|
然后在listener里面改变 因为对象是传引用的 所以在listener里改变shapes ,frame里的shapes也会随之改变
最后通过遍历队列
Class MyPanel extends JPanel {
/**
* 重写JPanel中用来绘制窗体的方法
*/
public void paint(Graphics g) {
// 调用父类的方法来正确的绘制窗体
super.paint(g);
System.out.println("绘制了");
// 遍历形状队列
for (int i = 0; i < shapes.size(); i++) {
// 取出形状
Shape sh = shapes.get(i);
// 绘制
sh.draw(g);
}
}
}
|
这里为什么要重建一个MyPanel 因为我们获取画布只需要在drawpanel上 而如果直接在frame中重写paint方法,则是在整个窗体上获取画布,浪费资源所以这里drawpanel建立时有一点小技巧
javax.swing.JPanel drawpanel = new MyPanel();
|
4)事件监听机制的理解
/**
* 事件监听机制的理解
* 在这个例子中 监听器是放在登录按钮上
* 从安装上监听器开始,监听器始终处于工作状态(即建立好监听器对象)
* 知道按下登录按钮 监听器对象开始自动调用方法 实现它的功能
*/
|
4. 错误点
先将其变成图标建立图标对象 图标->标签->标签加到窗体
javax.swing.ImageIcon icon2 = new javax.swing.ImageIcon("qq2.jpg");
// 把图片插入
JLabel secPic = new JLabel(icon2,JLabel.CENTER);
// 错点1:创建图标标签 要传入图标作为参数
jf.add(secPic); // 错点2:left是jlabel的静态变量所以要用类名调用
// 错点3:是要把流式布局管理器左对齐 因为图片在label里
|
/**
* 1. Dimension这个类是设置组件的宽度和高度
* setsize是设置窗体jframe的 设置其他组件的size都是用这个类
* 具体实现是
* //先建立一个dimension对象
* Dimension dim = new Dimension(90,20);
* //然后在这个组件里有一个方法叫 setPreferredSize 就可以设置组件的大小了
* box.setPreferredSize(dim);
* drawpanel.setPreferredSize(new Dimension(500,350));
|
/**
* 2.错点: 加菜单条JMenuBar上去的时候
* 是加到窗体上 jf.setJMenuBar(bar);
* 有专门的语句 而不是加组件的 add
*/
|
public class loginlistener implements java.awt.event.ActionListener{
/*
* 定义账号和密码 用来承接 输入的账号和密码
*/
private JTextField jt1;
private JPasswordField jt2;
/*
* 改写他的构造函数
*/
public loginlistener(JTextField jt1,JPasswordField jt2){
this.jt1 = jt1;
this.jt2 = jt2;
}
/*
*实现 ActionListener里的方法
*/
public void actionPerformed(ActionEvent e) {
/*
* 调用文本输入框的gettext函数 来得到 输入的账号和密码
*/
String name = jt1.getText();
String pwd = jt2.getText();
/*
* 打印账号和密码到java界面上
*/
System.out.print("账号:"+name+"\n"+"密码:"+pwd);
}
|
/**
* 难点1:监听器里的方法在创建对象的时候就自动调用了
* 难点2:ActionEvent e暂时还没有用到
* 难点3:要获得文本区域输入的文字 就要用文本对象来调用gettext
* 难点4:因为txtfild 和 passfild都是login.java里的 所以为了在这里使用只能重载构造函数
* 难点5:这里的jt1 和jt2 分别是 JTextField JPasswordField类型 而非 string类型
* 因为 我们是在 单击这个登录按钮的时候 才将 内容传入并打印出来的
* 若 在构造函数中 直接设成 string类型 则表明 把监听器 安到按钮上去的时候 内容就传进来了
*/
|
分享到:
相关推荐
在Java编程语言中,画图板(Canvas)是图形用户界面(GUI)开发的一个关键组件。它是Java AWT(Abstract Window Toolkit)库的一部分,用于在窗口上绘制图形。Canvas类继承自Component,允许程序员直接在屏幕上进行...
总结来说,《Java画图板》是一款集实用性和教学性于一体的软件,它结合了Java编程的理论与实践,为用户提供了一个简洁易用的图形绘制平台,同时也为学习Java语言的学生提供了一个良好的实践平台。通过设计和实现这样...
总结来说,"JAVA画图面板_绘画面板"涉及Java GUI编程中的自定义绘图技术,包括使用`Canvas`或`JPanel`创建画布,通过`Graphics`对象进行绘图,以及处理用户交互。"huatu.rar"中的内容很可能是为了帮助开发者理解这些...
本项目的Java画图板代码实现了一个基本的图形编辑工具,涵盖了文件操作、图形绘制和颜色/字体设置等多个方面。通过继承`JFrame`和使用Swing组件,实现了简洁的用户界面。尽管部分功能尚待完善,如具体的文件读写逻辑...
总结来说,这个"画图工具JAVA源代码"项目涵盖了Java基础、GUI编程、事件处理、Java 2D绘图以及文件I/O等多方面的知识。通过学习和研究这个项目,开发者不仅可以提升Java编程技能,还能了解如何创建一个实际的图形...
* JAVA基础知识:变量、数据类型、运算符、控制结构、函数等 * 图形编程技术:AWT、Swing等 * 面向对象编程的基本概念 * 画板界面设计图 * 模块概述 * 框架类DrawGraphic * 基本图形类 * 设计中的难点 总体设计 在...
Java AWT库是Java平台标准版(Java SE)的一部分,用于构建图形用户界面(GUI)。在本项目中,我们利用AWT(Abstract Window Toolkit)来创建一个简单的画图器,它具备基本的绘图功能,如绘制线条、圆形和矩形,并...
总结来说,这个Java画图程序充分利用了Java Swing库和`Graphics2D`类来提供一个交互式的图形绘制环境。它展示了如何在Java中实现图形用户界面、图形绘制、颜色选择、文件操作以及用户交互,为初学者提供了一个很好的...
总结一下,这个Java Swing画图小练习涵盖了以下几个关键知识点: 1. 使用 `JFrame` 和 `JPanel` 创建GUI。 2. 在 `JPanel` 的 `paintComponent(Graphics g)` 方法中进行自定义绘图。 3. 实现 `MouseMotionListener`...
颜色的选择和显示是画图板程序的重要组成部分。通过定义`Color`数组,可以预设多种颜色供用户选择。`nonceColor`面板用于实时显示当前选中的颜色,通过调用`setBackground()`方法来更新面板背景色,直观展示所选颜色...
在给定的压缩包子文件的文件名称列表"画图板实现保存和读取"中,我们可以推测这是一个关于图形界面应用程序的例子,可能涉及保存和加载用户在画板上绘制的内容。在Java中,这通常涉及到序列化对象(如图形对象)到...
总结来说,开发一个Java绘图软件涵盖了以下几个关键点: 1. 使用Java GUI库(如AWT和Swing)创建用户界面。 2. 利用Graphics类或Graphics2D进行图形绘制。 3. 实现事件监听机制以响应用户输入。 4. 设计堆栈数据...
总结,这个Java简易画板项目不仅锻炼了学生的编程技能,还提高了他们对GUI设计和人机交互的理解。通过这个实践,初学者将能够更好地掌握Java编程,尤其是GUI应用开发,为后续的软件开发奠定坚实的基础。
本书《Java实战入门[一个资深Java培训老师倾力收藏]》为Java初学者提供了一条从零基础到实战开发的学习路径,涵盖了Java编程...每一章后面都附有总结和任务,帮助读者巩固学习成果,同时也为教师提供了课堂讨论的素材。
本篇内容重点介绍了一个利用Java AWT和Swing库创建的简单图形界面应用程序——画图板工具。 #### 二、核心概念与组件 ##### 1. Swing与AWT - **AWT (Abstract Window Toolkit)**:是Java早期提供的图形界面库,它...
这份PPT的学习教案主要涵盖了...通过这份PPT的学习,学生可以掌握Java编程中的基础概念和实际操作,为后续深入学习Java编程打下坚实的基础。同时,对于教师而言,这种总结方式有助于检查学生的作业完成情况和理解程度。
总结,这个Java画板程序设计实验涵盖了基础的GUI编程概念,包括组件的创建、布局管理、事件处理以及基本的绘图算法。通过这个实验,学生可以深入理解Java图形界面编程,并提升问题解决和代码调试的能力。