gpt4 book ai didi

java - JPanel不会出现在JFrame(主类)中 - 初级Java

转载 作者:行者123 更新时间:2023-12-02 06:13:58 25 4
gpt4 key购买 nike

我刚刚开始使用 Java 进行 Swing ...我有一个关于创建一个单独的 JPanel 类并将其放入主类(带有 JFrame 的类)中的问题,JPanel 不会显示在主类中类(class)。程序可以运行,但只显示框架。我希望能看到带有“hello”标签的面板,但没有。

我知道我一直在这个网站上寻找其他解决方案,但我并没有真正得到其中的一些。

这是我的 JPanel 类:

import javax.swing.*;

public class CreatePanel extends JPanel
{
private JPanel panel = new JPanel();
private JLabel narrate;

public void setNarrate(String label)
{
narrate = new JLabel(label);
panel.add(narrate);
panel.setVisible(true);
}

public JPanel getPanel()
{
return panel;
}
}

这是 JFrame 的主类:

import javax.swing.*;

public class Maine extends JFrame
{
private static JFrame frame = new JFrame();

public static void main(String[] args)
{
new Maine();

CreatePanel panel1 = new CreatePanel();

panel1.setNarrate("Hallo");
panel1.getPanel();
frame.add(panel1);
}

public Maine()
{
frame.setTitle("Detective Game");
frame.setSize(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setIconImage(new ImageIcon("agent.png").getImage());
}
}

最佳答案

您混淆了继承和组合。您的 CreatePanel 类扩展了 JPanel。所以它是一个JPanel。但是这个面板中没有任何组件,因为您所做的是创建另一个 JPanel 并向另一个 JPanel 添加一个标签。

简而言之,您的 CreatePanel 类应该是:

public class CreatePanel extends JPanel {
private JLabel narrate;

public CreatePanel(String label) {
narrate = new JLabel(label);
this.add(narrate);
}
}

也就是说,使用仅包含标签的面板是没有用的。您可以直接将标签添加到框架中。

关于java - JPanel不会出现在JFrame(主类)中 - 初级Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21648533/

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