gpt4 book ai didi

java - 如何将JPanel类集成到JFrame类中?

转载 作者:行者123 更新时间:2023-12-01 11:06:09 28 4
gpt4 key购买 nike

我有三个类,MessageFrame、MessagePanel 和带有 main 方法的 Message。我不知道如何将 JPanel 添加到 JFrame 类中。

消息帧:

public class MessageFrame extends JFrame{

public MessageFrame(){
setTitle("Message in a Bottle");
setSize(960, 960);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
MessagePanel pane = new MessagePanel();
// <- this is where stackoverflow recommends add(MessagePanel) but it gives me an error
}

public void paint(Graphics g){
Graphics2D g2 = (Graphics2D)g;
Font font = new Font("Serif", Font.PLAIN, 30);
g2.setFont(font);
g2.drawString("Text", 160, 180);

}
}

消息面板:

 public class MessagePanel {
public MessagePanel(){
JPanel p = new JPanel();
}
}

消息:

public class Message {

public static void main(String[] args) {
MessageFrame x = new MessageFrame();
x.paint(null);
}
}

最佳答案

recommends add(MessagePanel) but it gives me an error

MessagePanel 不是Component,只有组件才能添加到框架中。

如果要将MessagePanel添加到框架中,那么MessagePanel需要扩展JPanel

那么就不需要在构造函数中创建 JPanel,因为该类已经是一个 JPanel。

x.paint(null);

当然,一旦你得到一个干净的编译,你将得到一个NullPointerException,因为你将null传递给paint()方法。摆脱该语句,甚至不要覆盖框架的 Paint() 方法。这不是定制绘画的方式。

我建议您阅读 Swing 教程来了解基础知识,因为您的代码表明您对 Swing 基础知识缺乏了解。

也许从 Top Level Container 开始。本教程包含大量示例,您应该下载以了解如何更好地构建代码。

关于java - 如何将JPanel类集成到JFrame类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32929361/

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