我是在button上加了一个listenner,在监听事件里可以用e.getSource()取得该button,我又想在监听器里操作button所在容器上的其他控件,怎么访问?
小白一枚,也许这个思路不靠谱,有更简单的实现访问容器panel上控件的方法
我现在这么解决:
Object x = e.getSource();// 取得了调用监听器的button
if(x.equals(p1.getComponent(6))){System.out.println("p1");}
if(x.equals(p2.getComponent(6))){System.out.println("p2");}
if(x.equals(p3.getComponent(6))){System.out.println("p3");}
如果知道需要操作的控件是哪个,直接通过全局变量访问不行吗
我有个办法可以解决这个问题:
1.自己写一个button类,从Button这个类继承。
2.在这个类添加一个成员变量Panel p;
3.定义一个构造方法,参数可以接收Panel对象。
4.定义好get,set方法。
5.new button对象时给它传递它所在的Panel的引用
如果有帮助希望采纳
JPanel panel = new JPanel();
JButton button = new JButton("button");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JButton source = (JButton) e.getSource();
System.out.println(source == button); // true
System.out.println(panel == source.getParent()); // true
System.out.println(panel == button.getParent()); // true
}
});
panel.add(button);
button.doClick();