gpt4 book ai didi

java - 学习 GUI - setContentPane() 方法

转载 作者:行者123 更新时间:2023-11-29 06:55:13 25 4
gpt4 key购买 nike

我正在学习 Java 中的 GUI 编程,并尝试修改现有程序以将包含按钮的垂直左侧面板添加到我的主框架。

主要方法如下。目前,MainPanel 类扩展 JPanel 并包含程序的主要组件(基本游戏)。我想在游戏右侧创建一个新面板。

public static void main(String[] args) {
JFrame frame = new JFrame("Sokuban");
MainPanel panel = new MainPanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.setContentPane(panel);
frame.pack();
frame.setVisible(true);

}

我明白(我想!)如何添加按钮 - 我没有被困在那里。

我试过这样的事情:

    frame.add(new MyPanel(), BorderLayout.NORTH);

(MyPanel() 是一个扩展 JPanel 的新类)

        window.setContentPane(panel, BoxLayout.X_AXIS);

(不会编译)

我坚持的是 a) 我是否应该尝试创建包含在我的 JFrame 中的两个 JPanel,然后使用 BoxLayout 将它们并排放置 (??)。或者,b) 我是否应该创建第二个 JPanel 以放置在 MainPanel 中,并以某种方式在那里重新排列它?

此外,尽管阅读了文献,但我不明白 setContentPane() 方法的作用。任何指针将不胜感激。

最佳答案

默认情况下,JFrame 已经有一个 JPanel 作为 ContentPane,它使用 BorderLayout。所以你可以这样做:

frame.add(new ButtonPanel(), BorderLayout.EAST);
frame.add(new MainPanel(), BorderLayout.CENTER);

JFrame setLayout() 和 add() 方法实际上只是 jFrame.getContentPane.setLayout() 和 jFrame.getContentPane.add() 的快捷方式。因此,在您的代码中,您设置了默认内容面板(一个 JPanel)的布局,就在将其替换为您的 MainPanel 之前,因此它没有任何效果。

setContentPane() 方法允许您替换 JFrame 的内容面板,但很少需要。

关于java - 学习 GUI - setContentPane() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35821071/

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