gpt4 book ai didi

java - JFrame 上没有显示任何内容

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

这就是我正在做的事情,但 Jframe 窗口上没有显示任何内容。我还没有扩展类 JFrame 来执行我的操作,是否有必要这样做才能在窗口上显示对象。

public class testGraphics {
static JFrame workingFrame = null;

public static void main(String args[])
{
JFrame workingManager = new JFrame("Hello");
workingManager.setSize(500, 500);
workingManager.setVisible(true);
Graphics g = workingManager.getGraphics();
JPanel jp = (JPanel) workingManager.getContentPane();
workingManager.paintComponents(g);
g.fillOval(0, 0, 30, 30);
g.drawOval(0, 50, 30, 30);
g.setColor(Color.CYAN);
}
}

最佳答案

永远不要调用 getGraphics() 或显式调用 paintXxx() 来进行自定义绘制。进行自定义绘画的正确方法是重写要绘画的面板的 paintComponent 方法。重写的方法将被隐式调用。然后将该面板添加到框架中。另外,您应该覆盖面板的 getPreferredSize() ,以便它具有首选尺寸,这样您就可以打包框架

class PaintPanel extends JPanel {
@Override
protected paintComponent(Grapchics g) {
super.paintComponent(g);
g.drawString(....);
}
@Override
public Dimension getPreferredSize() {'
return new Dimension(300, 300);
}
}

然后将其添加到框架中(或者如果您想将其设置为框架的内容 Pane ,也可以这样做)

PaintPanel panel = new PaintPaint();
frame.add(panel);
...
frame.pack();

查看更多信息 Performing Custom Painting

关于java - JFrame 上没有显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24192561/

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