0

我正在制作一个简单的 java swing 程序,允许用户玩二十一点。我有 10-15 个类代表程序中的 1 个“屏幕”,它们每个都扩展 JLayeredPane 并实现动作侦听器。我还有其他的甲板、卡片、回合、玩家等课程。

然后在另一个类中有两个属性:一个数组 arra(包含所有面板)和一个 Jframe 数组(所有面板都将转到),具有公共静态 void main。

然后在同一个类中我做了两件事,一个替换面板的方法:

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

然后我在 psvm 中创建这个类的一个对象,并从放入第一个面板开始。

所以我的问题是现在第一个面板已经启动,它的动作监听器附加到一个 JButton 它如何访问在包含 JFrame 和数组的类中创建的 JFrame,以便它可以使用上面的方法。现在,我每次都必须创建一个新框架,所以它建立在彼此之上?

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

谢谢

4

1 回答 1

4

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

2)如果你remove / modify / add的 JComponent(s) 顶部已经可见Container,那么我在代码行revalidate()repaint()

3) 没有人知道您真正的问题是什么,也没有人可以在您的显示器中看到代码,最好通过重新绘制 GUI 来隔离问题并使用SSCCE编辑您的问题

于 2012-05-08T21:37:56.550 回答