gpt4 book ai didi

Java:我如何知道组件位于哪个容器中

转载 作者:行者123 更新时间:2023-11-29 08:00:44 26 4
gpt4 key购买 nike

标题有点模糊,我会用代码来解释。假设我有

Class A extends JFrame implements ActionListener{
B b;
Class B extends JPanel{
public JButton button;
public B(A a){
button = new JButton();
button.addActionListener(a);// I want to process all actionEvents in A
this.add(button);
}
}
public A(){
b = new B(this);
//irrelevant codes omitted for brevity
}

public void actionPerformed(ActionEvent e){
//Here's the question:
//Suppose I have a lot of Bs in A,
//how can I determine which B the button
//that triggers this callback belongs to?
}
}

那有什么办法吗?还是我的想法不对?欢迎任何想法。

编辑:我最后要做的是向 B 添加一个函数 has(JComponent component) 来与每个可点击的 B 进行比较。当您有多个 JPanel 层时,getParent() 会变得很笨拙,因为很难弄清楚它指的是哪一层面板,而且它违背了封装的理念。

最佳答案

使用 e.getSource() 获取对触发事件的确切组件的引用。在您的例子中,它将是一个 JButton。要获取它所在的面板,请使用 e.getSource().getParent()

关于Java:我如何知道组件位于哪个容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14541289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com