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

时间:2015-10-04 02:10:47

标签: java swing

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

MessageFrame:

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);

}
}

MessagePanel:

 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);
}
}

2 个答案:

答案 0 :(得分:1)

  

建议添加(MessagePanel)但它给我一个错误

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

如果要将MessagePanel添加到框架,则MessagePanel需要extend JPanel

然后不需要在构造函数中创建JPanel,因为该类已经是JPanel。

x.paint(null);

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

我建议您阅读Swing教程的基础知识,因为您的代码显示缺乏对Swing基础知识的理解。

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

答案 1 :(得分:0)

this is where stackoverflow recommends add(MessagePanel) but it gives me an error

请改为add(pane)