Java JFrame-内容不可用';在调整窗口大小之前,无法正确显示 graphics2dg4=(Graphics2D)g.create(); g4.setColor(颜色为蓝色); g4.fillRect(180500,45,-f); g4.setFont(新字体(“purisa”,Font.PLAIN,18)); g4.drawString(“

Java JFrame-内容不可用';在调整窗口大小之前,无法正确显示 graphics2dg4=(Graphics2D)g.create(); g4.setColor(颜色为蓝色); g4.fillRect(180500,45,-f); g4.setFont(新字体(“purisa”,Font.PLAIN,18)); g4.drawString(“,java,swing,jframe,Java,Swing,Jframe,我以前遇到过类似的问题。我猜变量f是尚未初始化的类的成员,EDT在初始化变量之前绘制,当您调整大小(导致重新绘制)时,变量现在已初始化,并且所有内容都正确绘制。这是一种条件 一个很容易验证这个猜测的方法是添加一个println(f)在方法中,可以查看第一次绘制时f的值以及调整大小时f的值。该代码位于何处?它是否位于绘制事件处理程序中?我可以想到许多可能导致此问题的事情,但如果没有某种方法,甚至开始列出它们都将浪费我们两个部分的时间。…是的,它在public void paintComponent

我以前遇到过类似的问题。我猜变量f是尚未初始化的类的成员,EDT在初始化变量之前绘制,当您调整大小(导致重新绘制)时,变量现在已初始化,并且所有内容都正确绘制。这是一种条件


一个很容易验证这个猜测的方法是添加一个
println(f)
在方法中,可以查看第一次绘制时f的值以及调整大小时f的值。

该代码位于何处?它是否位于
绘制事件处理程序中?我可以想到许多可能导致此问题的事情,但如果没有某种方法,甚至开始列出它们都将浪费我们两个部分的时间。…是的,它在public void paintComponent(Graphics g)中。非常感谢这一点,我在paint事件处理程序中添加了一个repaint(),而不是在创建JFrame的地方(在另一个类中),并修复了它。@user2761143:不要从
paintComponent()
调用
repaint()
Graphics2D g4 = (Graphics2D) g.create();
g4.setColor(Color.BLUE);
g4.fillRect(180,500,45,-f);
g4.setFont (new Font("purisa", Font.PLAIN, 18));
g4.drawString("<$20", 180,520);