java中的this问题
importjavax.swing.JFrame;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjav...
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class MenuDemo extends JFrame {
public MenuDemo(String title)
{
super(title);
JMenuBar bar=new JMenuBar();
JMenu menu=new JMenu("File");
JMenuItem item1=new JMenuItem("open");
JMenuItem item2=new JMenuItem("save");
JMenuItem item3=new JMenuItem("close");
bar.add(menu);
menu.add(item1);
menu.add(item2);
menu.addSeparator();
menu.add(item3);
this.setJMenuBar(bar);
this.setSize(300,200);
this.setVisible(true);
}
public static void main(String [] args) {
new MenuDemo("menu");
}
}
请问this在这里是指谁呢?
再追加一个问题:如何在"open"菜单项上增加一个图标文件?如何实现啊? 展开
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class MenuDemo extends JFrame {
public MenuDemo(String title)
{
super(title);
JMenuBar bar=new JMenuBar();
JMenu menu=new JMenu("File");
JMenuItem item1=new JMenuItem("open");
JMenuItem item2=new JMenuItem("save");
JMenuItem item3=new JMenuItem("close");
bar.add(menu);
menu.add(item1);
menu.add(item2);
menu.addSeparator();
menu.add(item3);
this.setJMenuBar(bar);
this.setSize(300,200);
this.setVisible(true);
}
public static void main(String [] args) {
new MenuDemo("menu");
}
}
请问this在这里是指谁呢?
再追加一个问题:如何在"open"菜单项上增加一个图标文件?如何实现啊? 展开
5个回答
展开全部
首先java对于对象的内存管理是这样的
泛泛的说 一个类所有的对象 他们共享一个代码段 各自有各自的数据区
所以当你要执行一个语句时 比如a++;或者sort();
他就必须知道是哪各一对象要执行这行代码,然后找到那个对象的数据区 取出数据 如果有必要再取出这个类的代码区 交个cpu去运算
this就相当一个指针,指向正在跑的那个对象,对于程序员来讲可写可不写
当源程序 .java 到中间吗.class的是时候会补充所有的this.
比如你写一个类:
class Test{
private String a;
public void foo()
{
a=new String();
}
}
形成中间码.class后会变成
class Test{
private String a;
public void foo()
{
this.a=new String();
}
}
编程者是用的面向对象的思想 可是电脑可没那么聪明 他还是要知道是哪个对象要去执行这个代码的
你是想在在单按钮左边加个图标是吧
jMenu3.setIcon(new javax.swing.ImageIcon(“…………”));
省略号的地方填图的路径
泛泛的说 一个类所有的对象 他们共享一个代码段 各自有各自的数据区
所以当你要执行一个语句时 比如a++;或者sort();
他就必须知道是哪各一对象要执行这行代码,然后找到那个对象的数据区 取出数据 如果有必要再取出这个类的代码区 交个cpu去运算
this就相当一个指针,指向正在跑的那个对象,对于程序员来讲可写可不写
当源程序 .java 到中间吗.class的是时候会补充所有的this.
比如你写一个类:
class Test{
private String a;
public void foo()
{
a=new String();
}
}
形成中间码.class后会变成
class Test{
private String a;
public void foo()
{
this.a=new String();
}
}
编程者是用的面向对象的思想 可是电脑可没那么聪明 他还是要知道是哪个对象要去执行这个代码的
你是想在在单按钮左边加个图标是吧
jMenu3.setIcon(new javax.swing.ImageIcon(“…………”));
省略号的地方填图的路径
展开全部
this的用法通常是只会在方法里(包括构造方法)
调用一个方法,java会将一个this隐式的传到方法里,然后你在方法里用this的话,this就是指调用这个方法的对象,如:
MyObject mo = new MyObject();
mo.show();
假设show这个方法里的代码是:
System.out.println(this.info);//info是一个属性
这时this就是指mo这个对象
对于你的程序,因为你是在构造方法里使用this
那么当你new MenuDemo这个对象时,如
MenuDemo md = new MenuDemo();
那么构造方法里的this就是指md这个对象,说得准确一点md只不过是个引用
你只要知道java会隐式的传一个this参数到方法里,这个this就是指调用该方法的对象
调用一个方法,java会将一个this隐式的传到方法里,然后你在方法里用this的话,this就是指调用这个方法的对象,如:
MyObject mo = new MyObject();
mo.show();
假设show这个方法里的代码是:
System.out.println(this.info);//info是一个属性
这时this就是指mo这个对象
对于你的程序,因为你是在构造方法里使用this
那么当你new MenuDemo这个对象时,如
MenuDemo md = new MenuDemo();
那么构造方法里的this就是指md这个对象,说得准确一点md只不过是个引用
你只要知道java会隐式的传一个this参数到方法里,这个this就是指调用该方法的对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
MenuDemo
this是指当前类对象
this是指当前类对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这的是MenuDemo 而 setJMenuBar setSize setVisible 是从他的父类JFrame 中继承过来的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
JFrame 的子类,即你自己的MenuDemo这个类,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询