gpt4 book ai didi

java - 为什么 JPanel 不显示在 Frame 上?

转载 作者:行者123 更新时间:2023-12-02 05:37:26 25 4
gpt4 key购买 nike

我得到了以下代码,这是我遇到的实际问题的缩短版本:

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 没有出现,我就是找不到错误。

不知道这是否重要,但在实际问题中,我在构造函数中使用其 JPanel 初始化了 JFrame,但它也不起作用。

如果需要的话我可以发布原始代码。实际任务是为 ConnectFour 游戏提供一个 GUI,其中 Frame 分为一个绘制圆盘的 JPanel 和另一个提供玩家信息(如姓名等)的 JPanel。第一部分工作正常,但最后一部分无法工作。 (不要对我发布的绘制圆圈的代码感到困惑。我想发布我正在考虑的玩家信息面板解决方案的结构。)

最佳答案

Why does the JPanel not display on the Frame?

应该重写paintComponent()方法而不是printComponent()方法

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
this.drawPlayer(g);
}

关于java - 为什么 JPanel 不显示在 Frame 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24844108/

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