gpt4 book ai didi

java - 两个独立的 Java 桌面应用程序之间的通信

转载 作者:IT老高 更新时间:2023-10-28 20:39:51 24 4
gpt4 key购买 nike

我正在寻找开发两个独立(但相关)的 Java 桌面应用程序。

我希望一个应用程序能够触发另一个应用程序,传入可以编辑和传回的数据,即通信将是两种方式。如果其他应用程序已经在运行,我希望它们只进行通信,即我不想只通过命令行传递参数等。

一般来说,为了实现这一目标,我应该考虑哪些策略/技术?

最佳答案

要展示让两个应用程序相互通信是多么容易,请查看这个使用 JGroups 的网络剪贴板演示。只需启动两个实例并开始将文件放入其中一个。第二个实例将立即显示相同的文件。

import java.io.Serializable;
import java.awt.*;
import java.awt.datatransfer.*;
import javax.swing.*;
import org.jgroups.*;

public class JGroupsTest {

public static void main(String[] args) throws Exception {
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setSize(500, 300);
final DefaultListModel listModel = new DefaultListModel();
final JList panel = new JList(listModel);
panel.setBackground(new Color(128, 0, 40));
panel.setForeground(new Color(240, 240, 240));
frame.add(panel);
System.setProperty("java.net.preferIPv4Stack", "true");
final JChannel channel = new JChannel("udp.xml");
channel.connect("networkclipboard");
channel.setReceiver(new ReceiverAdapter() {
@Override
public void viewAccepted(View newView) {
frame.setTitle("Network Clipboard - " + channel.getLocalAddress());
}

@Override
public void receive(Message msg) {
listModel.addElement(msg.getObject());
}
});

panel.setTransferHandler(new TransferHandler() {
@Override
public boolean importData(JComponent comp, Transferable t) {
DataFlavor[] transferDataFlavors = t.getTransferDataFlavors();
for (DataFlavor flavor : transferDataFlavors) {
try {
Object data = t.getTransferData(flavor);
if (data instanceof Serializable) {
Serializable serializable = (Serializable) data;
Message msg = new Message();
msg.setObject(serializable);
channel.send(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
return super.importData(comp, t);
}

@Override
public boolean canImport(TransferSupport support) {
return true;
}

@Override
public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) {
return true;
}

});
}

}

关于java - 两个独立的 Java 桌面应用程序之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1680898/

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