gpt4 book ai didi

java - 使用 Swing 组件将文本发送到另一个对象

转载 作者:行者123 更新时间:2023-12-02 05:35:05 25 4
gpt4 key购买 nike

我有一个类,它创建一个 JButton、一个用于显示消息的 JTextArea 和另一个用于接收输入消息的 JTextArea

我使用一个类来创建 2 个对象的实例。

class TextingProgram
{
public static void main(String[] args)
{
TextSenderUI senderObj1 = new TextSenderUI("User1");
TextSenderUI senderOjb2 = new TextSenderUI("User2");
}
}


class TextSenderUI
{
//Creates swing components - btnSend, txtDisplay, txtInput
//Action Listener for btnSend which sends text of txtInput to both windows' textDisplay
}

我尝试了几种方法(例如采用MVC)来让他们共享信息。但最终我仍然需要在从一侧按下发送按钮时在两个窗口中显示文本。

问题:如果我要使用 Action 监听器在其自己的窗口上显示文本,我没有问题。但是,如何让操作监听器对两个对象(senderObj1 和 senderObj2)的 textDisplay 执行操作?

最佳答案

一种简单的方法是类似于创建自定义监听器。

在每个 TextSenderUI 类中,初始化一个 TextSenderUI 类型的空列表。即,

LinkedList<TextSenderUI> textSenderUIList = new LinkedList<TextSenderUI>();

向类添加一个公共(public)方法,以允许添加到此列表。即,

public void addTextSenderUIListener(TextSenderUI tSUI) {
textSenderUIList.add(tSUI);
}

在该类中添加另一个公共(public)方法来写入文本,即

public void showText(String text) {
yourTextArea.setText(text);
}

您将需要另一种方法来告诉所有注册为监听器的类执行操作,即

protected void fireShowText() {
String text = getTextFromWhateverYourTextArea();
ListIterator<TextSenderUI> it = textSenderUIList.listIterator();
while (it.hasNext()) {
it.next().showText(text);
}
}

您将在发送按钮上放置一个actionListener,每次按下时都会调用 fireShowText()。

在主代码中,您将其更改为:

TextSenderUI senderObj1 = new TextSenderUI("User1");
TextSenderUI senderObj2 = new TextSenderUI("User2");
senderObj1.addTextSenderUIListener(senderObj2);
senderObj2.addTextSenderUIListener(senderObj1);

关于java - 使用 Swing 组件将文本发送到另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25064029/

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