2012-05-08 53 views
0

我正在制作一个简单的java swing程序,允许用户玩二十一点的过程。我在程序中有10-15个代表1个“屏幕”的类,它们每个都扩展JLayeredPane并实现动作监听器。我也有其他类的甲板,卡片,圆形,球员等如何动态重绘JFrame中的JPanel?

然后在另一个类有两个属性:一个数组阵列(其中包含所有面板)和一个Jframe之一(所有面板将去) ,用public static void main。

然后在同一个类中我做两件事情,它取代面板的方法:

public void screenInit(int i) 
{ 
    one.setContentPane(arra[i-1]); 
    one.invalidate(); 
    one.validate(); 
    one.repaint(); 
} 

然后我在PSVM创建这个类的一个对象,并通过将在第一板开始。

所以我的问题是,现在第一个面板已启动,它将动作侦听器连接到JButton,它如何访问在持有JFrame和数组的类中创建的JFrame,以便它可以使用上述方法。现在,我不得不每次创建一个新框架,因此它建立在彼此之上?

如果这是不可能的,我应该如何组织我的课程,让每个面板上的多个按钮互相引导?

感谢

回答

4

1)的情况下,你使用Swing JComponents那么你可以删除代码行one.invalidate();因为当前LayoutManager没有理由设置状态是JPanel不是当前显示的GUI有效的元素

2)如果你remove/modify/add JComponent的(一个或多个)顶部已经可见Container,然后我有代码行成功revalidate()repaint()

3)没有人知道什么是你真正的问题(S ),也没有人可以在你的显示器中看到代码,更好的办法是隔离重新绘制GUI的问题,并编辑你的问题,用SSCCE