java - 从容器类访问属性
问题描述
我有一个 A 级和一个 B 级
在 A 类中,我有多个 B 实例。从 A 类,在定义 B 之后,我为 B 类编写了一个 mouseListener 事件,它可以工作。现在我意识到我必须为我实例化的每个 B 类编写相同的 mouseListener,它们所做的一切都是一样的:打开一个对话框询问一个数字,所以我决定在 B 类构造函数中编写那个 mouseListener。
当 mouseListener 必须访问 A 的私有属性时,问题就出现了。在这一点上,我考虑过在触发 mouseEvent 时使用函数式接口/回调将值从 B 发送到 A,但我觉得代码会有点乱,就像我使用错误的工具到达我想要的功能,也许我错了......
有什么建议或建议吗?我将发布一些代码,以便您更好地理解它。这是我的 A 类:此代码有效,但现在认为我必须一次又一次地编写相同的代码行
PowerConfigPanel 是 A 类。PTextField 是 B 类。connectionListener 是我所说的 A 私有属性。
public class PowerConfigPanel extends JPanel {
private ConnectionListener connectionListener;
public PowerConfigPanel(){
PTextField SUSPEND_CHARGER_BF= new PTextField(7);
SUSPEND_CHARGER_BF.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
JPanel insertValuePanel = new JPanel();
insertValuePanel.setLayout(new GridLayout(3,2,1,1));
PTextField field = new PTextField(7);
insertValuePanel.add(UtilsService.createComponentPanel(field,"Insert Value "));
int result = JOptionPane.showConfirmDialog(null, insertValuePanel,
"Please Enter a new Value", JOptionPane.OK_CANCEL_OPTION);
if(result == JOptionPane.OK_OPTION){
JOptionPane.showMessageDialog(null, "Invalid input for seconds", "Error", JOptionPane.ERROR_MESSAGE);
connectionListener.connect("a","b",Integer.valueOf(field.getText()));
}
}
});
}
}
我的意思是: mouseClick 返回 void ... 是否有可能让它返回一个整数并在单击 B 类时在 A 类中收集该整数?
解决方案
推荐阅读
- python - 如何创建 3 个列表的所有可能组合的列表?
- machine-learning - Keras fit_generator 输入形状不正确
- paypal - PayPal 未在退货时发送交易信息
- javascript - 使 DIV 风格化为 textarea 并包含可编辑的格式化文本
- javascript - Gutenberg Richtext 组件在一次击键后将用户选项卡移出字段
- amazon-web-services - 大三角帆 + ECR 访问
- php - 使用输入变量确定 forloop 必须执行的内容(以及执行次数)
- python-3.x - 遍历嵌套列表并附加其他列表的函数无法正常运行
- xml - 使用 XSL 转换生成 HTML 实体
- bash - 使用 awk 打印标题名称和子字符串