Java 为什么JPanel不显示在框架上?
我得到了以下代码,这是我遇到的实际问题的简化版本:Java 为什么JPanel不显示在框架上?,java,swing,Java,Swing,我得到了以下代码,这是我遇到的实际问题的简化版本: import javax.swing.*; import java.awt.*; public class Circle { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub JFrame frame = new JFrame();
import javax.swing.*;
import java.awt.*;
public class Circle {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame frame = new JFrame();
Painter panel = new Painter();
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
import javax.swing.*;
import java.awt.*;
public class Painter extends JPanel{
/**
*
*/
private static final long serialVersionUID = 5663520834139683160L;
/**
* @param args
*/
Painter()
{
}
public void drawPlayer(Graphics g)
{
g.setColor(Color.GREEN);
g.fillOval(0, 0, 200, 30);
//g.setColor(Color.GREEN);
//g.drawRect(0, 0, 80, 50);
//g.setColor(Color.BLUE);
//g.fillRect(0, 0, 80/2, 50/2);
//g.setColor(Color.BLACK);
//g.drawString("BOB", 10/2+10, 5/2);
}
@Override
public void printComponent(Graphics g)
{
super.paintComponent(g);
this.drawPlayer(g);
}
}
当我执行它时,JPanel没有出现,我就是找不到错误
不知道这是否重要,但在实际问题中,我在构造函数中使用JFrame的JPanel初始化JFrame,但它也不起作用
如有必要,我可以发布原始代码。实际任务是为ConnectFour游戏提供一个GUI,其中框架分为一个绘制光盘的JPanel和另一个提供玩家信息(如姓名等)的JPanel。第一部分工作正常,但最后一部分就不行了。(不要被我贴出的画圆圈的代码弄糊涂了。我想在玩家信息面板上贴出我正在考虑的解决方案的结构。)
为什么JPanel不显示在框架上
应该重写paintComponent()
方法,而不是printComponent()
方法
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
this.drawPlayer(g);
}
哇,这真是太尴尬了。我只是没有注意到这一点。谢谢!!!