Java 通过jDialog将数据传递给另一个jPanel

Java 通过jDialog将数据传递给另一个jPanel,java,swing,jpanel,jbutton,actionlistener,Java,Swing,Jpanel,Jbutton,Actionlistener,我创建了一个jPanel,并在单击按钮时打开了一个新的jDialog(dlgSegments是一个打开的jDialog): 然后在打开的jDialog中,我想将“selected”返回给称为jDialog的jPanel 我如何实现它 这是打开的jDialog中的按钮侦听器,seleced是我要传递给jPanel的变量: addButton.addActionListener(new ActionListener() { public void actionPerformed(Action

我创建了一个jPanel,并在单击按钮时打开了一个新的jDialog(dlgSegments是一个打开的jDialog):

然后在打开的jDialog中,我想将“selected”返回给称为jDialog的jPanel

我如何实现它

这是打开的jDialog中的按钮侦听器,seleced是我要传递给jPanel的变量:

addButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        GeoSegment selected = lstSegments.getSelectedValue();
        // i want to send back the selected value
    }
});

一种可能的解决方案是:如果您创建了对话框,则通过其构造函数向该对话框发送一个数据对象。数据对象包含您感兴趣的值

MyDataObject dataObject = new MyDataObject();
MyDialog dialog = new MyDialog(dataObject);

在对话框中用所选值填充数据对象。

如果您仍在处理,您的添加按钮可以调用
getSelectedIndex()
GetSelectedDices()
,以了解所选内容。然后发射一个
propertychangevent
像@Hovercraft一样充满鳗鱼表演。让您的主面板执行
addPropertyChangeListener()
来侦听对话框。

为了更好地帮助您,请在大约凌晨发布一个简短、可运行、可编译的问题如果对话框是模态的,它将在调用时阻塞,直到关闭为止,在这一点上,您将能够请求您需要的请求信息it@MadProgrammer,我不明白你的意思。我很乐意举一个简短的例子“通过jdialog将数据传递给另一个jpanel”。除非您有一个扩展
jpanel
的类,否则这个问题毫无意义。提示:不要扩展
JPanel
,只需保留对其中一个的引用即可。如果你听从这个建议,问题可能会自行解决。否则,发布您的最佳尝试。您好,谢谢您的回答,我想这样做,每次我在打开的jdialog中单击按钮addButton时,它都会将一个变量发送到“原始”jpanel…根据您的建议,我只能传递一个变量…MyDataObject的内容可以是一个列表。因此,可以将选定对象添加到列表中。将PropertyChangeSupport添加到dataobject并将面板注册为侦听器。您好,谢谢您的帮助,是的,我仍在解决此问题。。我将getSelectedIndex()添加到addButton。但是我不明白:我需要在哪里添加addPropertyChangeListener()方法?我会在主面板中这样说。
MyDataObject dataObject = new MyDataObject();
MyDialog dialog = new MyDialog(dataObject);