我创建了一个带有按钮,标签和文本的JFrame
,我想在执行主程序时显示两次,所以我确实喜欢这样:
import java.net.SocketException;
public class Main {
public static void main(String[] args) throws SocketException {
new MyFrame("client1");
new MyFrame("client2");
}
}
结果:我得到两个框架:一个框架内部另一个框架,一个框架为空。
如何解决此问题?
答案 0 :(得分:2)
您正在使用static
个实例字段和MyFrame
作为组件
组件只能驻留在单个容器中,当您创建第二个框架时,静态组件会在添加到第二个容器之前从第一个容器中删除。
解决方案,不要这样做,永远......
我假设您正在使用static
,因为您想要从另一个类访问这些字段,在这种情况下,您应该在MyFrame
类中使用适当的getter并将其引用传递给那些类需要它。
或者,您可以建立一系列监视变化并采取适当措施的观察者,这有助于解耦代码。
就个人而言,如果你需要以某种方式修改MyFrame
实例,我会提供更新组件的setter方法,因为我不喜欢在没有充分理由的情况下公开UI元素,其他人适当地搞乱他们