利用构造函数传递参数
public class Painter{
//定义方法
public void showFrame(){
javax.swing.JFrame frame=new javax.swing.JFrame();
frame.setSize(300,400);
frame.setTitle("QQworld");
frame.setLocationRelativeTo(null);
//frame.setDefaultCloseOperation(3);
java.awt.FlowLayout layout=new java.awt.FlowLayout();
frame.setLayout(layout);
frame.setVisible(true);
//获取窗体的画布对象
java.awt.Graphics g = frame.getGraphics();
//创建鼠标事件监听器
java.awt.event.MouseListener mymouselistener=new MyMouseListener(g);
// 对窗体进行鼠标事件监听
frame.addMouseListener(mymouselistener);
}
public static void main(String[]args){
Painter QQ=new Painter();
QQ.showFrame();
}
}
//创建一个鼠标监听器对象
public class MyMouseListener implements java.awt.event.MouseListener{
private int x1,x2,y1,y2;
private java.awt.Graphics g;
//构造函数
public MyMouseListener(java.awt.Graphics gr){
g = gr;
}
//实现接口类中的所有抽象方法
public void mouseClicked(java.awt.event.MouseEvent e){
System.out.println("clicked");
}
public void mousePressed(java.awt.event.MouseEvent e){
System.out.println("pressed");
x1=e.getX();
y1=e.getY();
}
public void mouseReleased(java.awt.event.MouseEvent e){
System.out.println("release");
x2=e.getX();
y2=e.getY();
//画图
g.drawLine(x1,y1,x2,y2);
}
public void mouseEntered(java.awt.event.MouseEvent e){
System.out.println("entered");
}
public void mouseExited(java.awt.event.MouseEvent e){
System.out.println("Exited");
}
}
//如上例
先把MyMouseListener(g)中的实参g传给MyMouseListener(java.awt.Graphics gr)中的形参gr
然后再把gr传给MyMouseListener类中的属性g
分享到:
相关推荐
在C++的构造函数中,子类继承父类,那么,在创建一个子类成员时,可以同时向父类或者子类的构造函数进行传参,实现方法如下: 写一个例子:mul_argc.c #include #include using namespace std ; //英雄联盟类 ...
- 构造函数传参:如 `MyClass cls2(cls1);` - 创建临时对象:如在表达式中使用操作符重载时,编译器可能会创建临时对象。 #### 4. 解决方案 为了解决指针挂起的问题,最常用的方法是实现一个深拷贝(deep copy)的...
1、构造函数 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type='text/css'> *{ margin:0; padding:0;} #wrap{ width:500px; ...
1. **构造函数传参**:这是最常见的数据传递方式之一,即将需要的数据作为构造函数的参数传递给目标窗体。 2. **属性传参**:可以通过为窗体添加公共属性的方式,在打开新窗体之前设置这些属性的值,然后在新窗体中...
cpp代码-C++:初始化列表:2.向构造函数传递参数
1. 构造函数传参:创建新窗体实例时,可以通过构造函数将参数传入。例如,在`Form2`中定义一个接受字符串参数的构造函数: ```csharp public partial class Form2 : Form { public Form2(string param) { ...
本篇将详细讲解两种主要的方式:通过构造函数传参和使用自定义类。 首先,让我们来看看**通过构造函数传递数据**的方法。在Java中,我们可以创建一个新的`Thread`类的子类,并在其中重写`run`方法。在构造函数中...
在ChildWindow中传递参数通常有两种方式:构造函数传参和依赖属性。 1. **构造函数传参**: 你可以在ChildWindow的构造函数中接收参数,然后在内部使用。例如,假设我们想要传递一个字符串参数: ```csharp ...
2.IOBase、SerialPort(继承自IOBase)、GPIB(继承自IOBase)三个类修改了构造函数,原来FIFO缓冲的尺寸固定为256,我觉得波特率高时候可能不够用,现在改为通过构造函数传参由用户指定,示例程序中使用4096。...
2. **构造函数传参**:如果参数是对象或更复杂的类型,可以通过aar库提供的构造函数接收。主项目在创建aar库实例时传递参数。例如: ```java // 在aar库中 public class AarService { private String apiKey; ...
首先,让我们来看看如何在ES5中创建一个具有构造函数和参数的“类”。构造函数是一个特殊的方法,用于初始化新创建的对象。在ES5中,我们可以定义一个函数来充当类的构造器: ```javascript function Person(name) ...
缺点是创建子类实例时无法向父类构造函数传参,子类实例对父类引用类型的属性修改会影响所有实例。 2. **经典原型链继承**:通过在父类构造函数内部设置属性,并在子类构造函数中调用父类构造函数,实现属性的正确...
很显然,这个时候obj的constructor已经不再是创建它的函数,注意到obj.name也是undefined,因此修改构造函数的prototype的contructor并不会影响构造函数所产生的对象。真正的原因是:一个对象的constructor是它的...
- **构造函数传参**:创建线程对象时,可以将参数作为构造函数的参数传递。 - **匿名内部类传参**:使用匿名内部类实现Runnable接口时,可以将参数作为局部变量引入,然后在线程的run()方法中使用。 - **线程局部...
- **构造函数传参**:在创建Form2实例时,可以通过构造函数将数据传递过去。 ```csharp private void button1_Click(object sender, EventArgs e) { Form2 form2 = new Form2(someValue); form2.Show(); } ``` 在...
1. **构造函数传参**: 当打开新窗体时,可以通过传递参数给新窗体的构造函数来实现数据传递。例如,假设有两个窗体Form1和Form2,我们可以在Form1中创建Form2实例并传递数据: ```csharp Form2 form2 = new ...
1. 构造函数传参: 当打开窗体2时,我们可以通过窗体的构造函数将数据作为参数传递。例如,在窗体1的按钮点击事件中创建窗体2的实例并传递数据: ```csharp Form2 form2 = new Form2(valueFromForm1); form2....
- 创建子类实例时,无法向父类构造函数传参。 #### 二、构造继承 **核心思想**: 使用父类的构造函数来初始化子类的属性。 **实现方式**: ```javascript function Animal(name) { this.name = name || 'Animal'; ...