java中 进行事件处理的问题?
我给一个JButton对象添加了一个事件监听器,没有使用匿名内部类,如何在事件回调处理函数里面引用其他组件对象,因为事件处理函数是位于单独的一个类,它的作用域里面无法看到...
我给一个JButton对象添加了一个事件监听器,没有使用匿名内部类,如何在事件回调处理函数里面引用其他组件对象,因为事件处理函数是位于单独的一个类,它的作用域里面无法看到其他的组件对象,我要在事件处理函数里面处理其他的组件对象该怎么办呀,不使用匿名内部类。
public class a{
JButton login=new JButton();
login.addActionListener((ActionListener) new loginhandler());
}
然后定义了loinhandler类
public class loginhandler implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
/*在这里要改变其他组件的内容,但是作用域够不到其他组件,该怎么办那*/
}
} 展开
public class a{
JButton login=new JButton();
login.addActionListener((ActionListener) new loginhandler());
}
然后定义了loinhandler类
public class loginhandler implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
/*在这里要改变其他组件的内容,但是作用域够不到其他组件,该怎么办那*/
}
} 展开
5个回答
展开全部
你需要传递一个JButton对象过来。
public class a{
JButton login=new JButton();
login.addActionListener((ActionListener) new loginhandler(login));
}
public class loginhandler implements ActionListener
{
JButton b;
public loginhandler(JButton b)
{
this.b = b;
}
@Override
public void actionPerformed(ActionEvent e)
{
/*在这里改变组件b的内容,前提是那些方法是public的*/
}
}
如果你想改变的不是JButton的内容,而是class a的内容,那么可以写成这样:
public class a{
JButton login=new JButton();
login.addActionListener((ActionListener) new loginhandler(this));
}
public class loginhandler implements ActionListener
{
a b;
public loginhandler(a b)
{
this.b = b;
}
@Override
public void actionPerformed(ActionEvent e)
{
/*在这里改变class a的内容,前提是那些方法是public的*/
}
}
public class a{
JButton login=new JButton();
login.addActionListener((ActionListener) new loginhandler(login));
}
public class loginhandler implements ActionListener
{
JButton b;
public loginhandler(JButton b)
{
this.b = b;
}
@Override
public void actionPerformed(ActionEvent e)
{
/*在这里改变组件b的内容,前提是那些方法是public的*/
}
}
如果你想改变的不是JButton的内容,而是class a的内容,那么可以写成这样:
public class a{
JButton login=new JButton();
login.addActionListener((ActionListener) new loginhandler(this));
}
public class loginhandler implements ActionListener
{
a b;
public loginhandler(a b)
{
this.b = b;
}
@Override
public void actionPerformed(ActionEvent e)
{
/*在这里改变class a的内容,前提是那些方法是public的*/
}
}
展开全部
loginhandler
创建构造方法,把a的实例传过来命使用
创建构造方法,把a的实例传过来命使用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
创建构造方法,把a的实例传过来命使用
楼上正解!
楼上正解!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把你要操作的对象用参数传进去不就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不知道你想操作的是什么组件对象。大部分的组件对象可以设置为静态的,就能直接用类名加属性名调用了。这样作用域的问题就解决了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询