gpt4 book ai didi

Java JFrame 布局

转载 作者:行者123 更新时间:2023-12-02 08:28:45 33 4
gpt4 key购买 nike

这就是问题所在,我有一个 MainWindow 类,它在一个设置例程中扩展了 JFrame,我将该类的布局设置为新的 CardLayout()。这一切都工作正常,但是当我从 JFrame 请求布局并将其返回的内容转换为 CardLayout 时,我收到错误,因为它返回 BorderLayout。我想你已经从听到的声音中得到了图片。

请在下面找到一些代码:

public MainWindow()
{
initWindow();
}

public void actionPerformed(ActionEvent e)
{
CardLayout m = (CardLayout)super.getLayout();
m.next(this);
}

private void initWindow()
{
super.getContentPane().setLayout(_mainLayout);
super.setTitle(_WINDOW_NAME);
super.setSize(_DEFAULT_WINDOW_SIZE);
super.setLocationRelativeTo(null);
super.setAlwaysOnTop(true);
super.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
super.setResizable(false);

init_buttons_panel();
super.add(_buttons_panel, "bpanel");
}

我发现代码并不完美,这是因为我一直在尝试一切来解决问题。是的,我意识到这样的转换不好,但这只是证明这一点的测试代码。哦,_mainLayout 你猜对了,它是一个 CardLayout。

我还阅读了如何使用卡片布局,并且我的代码没有执行任何异常操作。

最佳答案

首先,您不应该转换这样的布局,至少在没有进行任何验证的情况下。您应该首先使用 instanceof 关键字来检查它是否真的是一个 CardLayout,以防止程序突然结束。

第二,问题就在这里:

public void actionPerformed(ActionEvent e)
{
CardLayout m = (CardLayout)super.getContentPane().getLayout();
m.next(this);
}

基本上,您获取的是 JFrame 的布局,而不是从 JFrame 的内容 Pane 获取的,这是您实际设置为 CardLayout 的布局。

关于Java JFrame 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3920622/

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