我正在制作一个简单的java swing程序,允许用户玩二十一点。我在程序中有10-15个代表1“屏幕”的类,它们各自扩展JLayeredPane并实现动作监听器。我还有甲板,卡片,圆形,球员等其他课程。
然后在另一个类中有两个属性:一个数组arra(包含所有面板)和一个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,以便它可以使用上面的方法。现在,我每次都要创建一个新的框架,所以它建立在彼此之上?
如果无法做到这一点,我应该如何组织我的课程,使每个小组的多个按钮相互引导?
由于
答案 0 :(得分:4)
1)如果您使用Swing JComponents,那么您可以删除代码行one.invalidate();
,因为当前LayoutManager
没有理由设置状态JPanel
不是当前的有效元素显示GUI
2)如果remove / modify / add
JComponent(s)位于已经可见的Container
之上,那么我在代码行revalidate()
和repaint()
3)没有人知道你的真实问题是什么,也没有人能在你的监视器中看到代码,更好的方法是通过重新绘制GUI来隔离问题并用SSCCE编辑你的问题