gpt4 book ai didi

Java Swing : How to access variables in a 2nd frame from the first frame?

转载 作者:行者123 更新时间:2023-11-29 08:17:42 24 4
gpt4 key购买 nike

我正在使用 NetBeansJava 中编写桌面应用程序。

我的问题是:

第一:我有一个 Jframe,它是应用程序的主要框架。

第二:有时我想创建某种新对象,所以我按 addButton y 创建一个新的 JFrame(我创建一个扩展 Jframe 的新类窗口),其中包含一些文本字段。

private void addButtonMouseClicked(java.awt.event.MouseEvent evt) {
w = new window();
w.setVisible(true);
}

这是一个用简单字符串而不是完整类简化的屏幕截图 http://img820.imageshack.us/img820/3361/screenshotlw.png

第三:在这个新窗口中,我阅读了文本字段并在按下某个按钮时创建了对象。

最后,当我按下接受按钮时,我希望新帧在第二帧中获取对象。

问题:从第一帧获取第二帧中的对象的最优雅/高效/简单/更好的方法是什么?

我的第一个解决方案:是在第一个窗口上创建一个静态方法 setNewData(),当您按下按钮时,第二个窗口会调用此方法。

现在我有了一个新解决方案:在第二帧上,我有一种在按钮上设置鼠标监听器的方法。和一个 getString() 函数。

在第一帧我得到了这个:

private void addButtonMouseClicked(java.awt.event.MouseEvent evt) {
w = new window();
w.setHandler(ml);
w.setVisible(true);
}

MouseListener ml = new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
TextFieldOn1stFrame.setText(w.getString());
}
};

在第二帧我得到了这个

public void setHandler(MouseListener ml){
button1.addMouseListener(ml);
}

public String getString(){
return texto.getText();
}

注意:对于长文本,我很抱歉,我是 Java 的新手,不知道这个解决方案是否是最好的。顺便说一句,我的英语也很抱歉。

最佳答案

好吧,我没有足够的代表来评论 mangst 的解决方案,但我想补充一点,你使用优雅和高效这两个词,这似乎是某些设计模式的绝佳机会。

mangst 描述的是观察者模式 (http://en.wikipedia.org/wiki/Observer_design_pattern) 的实现。但是,我建议按照 mangst 的建议使用一组对象来实现接口(interface)。这样,在给定更新后,您可以遍历许多观察者以在每个观察者中执行一些操作,无论是更改数据、演示等。如果多个窗口需要从您的子窗口接收数据/操作,则很简单只需将另一个添加到您已有的观察者列表中即可。

还有中介者模式 ( http://en.wikipedia.org/wiki/Mediator_pattern ) 可以实现类似的结果。

对于非常常见的计算问题,有很多千篇一律的方法,通过熟悉词典,您可以轻松实现久经考验的真实方法。

关于Java Swing : How to access variables in a 2nd frame from the first frame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3198600/

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