gpt4 book ai didi

Java:将事件传递给另一个组件

转载 作者:太空宇宙 更新时间:2023-11-04 08:54:34 24 4
gpt4 key购买 nike

抱歉,我不知道这是否很清楚,但我对 Java 还很陌生。

所以我有一个带有 BorderLayout 的 JFrame,其中包含一个 JPanel 和一个 JButton。

我想要做的是,当我的 JPanel 中发生某些情况时,我想要更改 JButton 的文本,或者启用/禁用它。我该怎么做呢?如何从 JPanel 访问 JButton?我知道一些方法,但我认为它们不是最好的方法。

最好的方法是什么?

提前致谢

最佳答案

最简单的情况是当您的 JPanel 实例和 JButton 实例在代码中相互“看到”时,即:

JButton button = new JButton ("Click me");
JPanel panel = new JPanel ();
...
container.add (button);
container.add (panel);

在这种情况下,您可以向面板(或按钮)添加一些事件监听器,并更改事件处理程序中的第二个组件:

panel.addMouseListener (new MouseAdapter () {
public void mouseClicked (MouseEvent e) {
button.setText ("new text");
}

});

这里唯一需要注意的是,您应该在 button 声明附近使用 final 修饰符(因为 java 没有真正的闭包):

final JButton button = new JButton ("Click me");
JPanel panel = new JPanel ();

panel.addMouseListener (new MouseAdapter () {
....
});
<小时/>

更复杂的情况是当您的组件彼此不了解或者系统状态发生更改并且组件状态(例如按钮名称或更严重的内容)也应该更改时。在这种情况下,您应该考虑使用 MVC 模式。这是来自 JavaWorld 的一个非常好的教程:MVC meets Swing .

关于Java:将事件传递给另一个组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2588185/

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