gpt4 book ai didi

java - 当我使用 JButtons 将静态添加到数组列表时,CardLayout 不显示 JButtons

转载 作者:行者123 更新时间:2023-11-30 04:29:19 25 4
gpt4 key购买 nike

我不知道哪里出了问题,但是很有趣。我用 CardLayout 和面板编写了代码。在带有 CardLayout 的面板上,我将 ArrayList 中的 JButton 放入其中,它正在工作......

它看起来像这样: enter image description here

带有CardLayout的面板位于底部,带有粉红色的JButtons.....我的代码的一部分是

public class Controller extends JPanel {

ArrayList<JButton> tnp=new ArrayList<JButton>();
ArrayList<JButton> sokp=new ArrayList<JButton>();
ArrayList<JButton> alkp=new ArrayList<JButton>();


CardLayout cardlayout=new CardLayout();
JPanel cardpanel = new JPanel(cardlayout);

但是,当我像这样将静态添加到 ArrayList 时:

static ArrayList<JButton> tnp=new ArrayList<JButton>();
static ArrayList<JButton> sokp=new ArrayList<JButton>();
static ArrayList<JButton> alkp=new ArrayList<JButton>();

我的应用程序如下所示:

enter image description here

如您所见,程序仍然显示带有 CardLayout 的面板(边框为 red ),但 JButtons 为

static ArrayList<JButton> tnp=new ArrayList<JButton>();
static ArrayList<JButton> sokp=new ArrayList<JButton>();
static ArrayList<JButton> alkp=new ArrayList<JButton>();

输了!为什么?

我不明白。一个 ArrayList 用于带有卡片布局的一个面板,该面板用于所有 JTabbedPane,我想从另一个类访问该列表(这就是为什么我想要静态),以向该面板添加或删除按钮。但我不能,没有任何内容添加到该 arraylist 中。

最佳答案

静态字段是属于其声明所在类的字段。而实例(非静态)字段属于其声明所在类的实例。

所以,如果您有以下情况:

public class Controller {
public static List<JButton> staticList = new ArrayList<JButton>();
public List<JButton> instanceList = new ArrayList<JButton>();

...
}

以及以下用户代码:

Controller c1 = new Controller();
Controller c2 = new Controller();

每个 Controller 都有自己的实例列表,但它们都共享一个唯一的静态列表。

您希望每个 Controller 都有自己的按钮,因此您绝对不需要静态列表。

如果您想从另一个对象访问 Controller ,您只需将 Controller 传递给另一个类实例:

Controller c1 = new Controller();
OtherClass other = new OtherClass(c1);

OtherClass 中,您可以使用 Controller 做任何您想做的事情:

private Controller theController;

public OtherClass(Controller controller) {
this.theController = theController;
}

public void foo() {
// call any method you want from theController
}

关于java - 当我使用 JButtons 将静态添加到数组列表时,CardLayout 不显示 JButtons,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15041313/

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