您的代码中存在许多问题,但是未调用paint()的主要原因是因为您的Bubble组件的大小为0 x 0.这是因为您没有覆盖getPreferredSize()以返回足够的值.此外,您的ypos变量在任何时候都会变为负数,这意味着您没有时间看动画.
现在,您应该考虑以下其他问题:
>覆盖paintComponent而不是paint
>确保你永远不会在EDT上睡觉(这里不会发生,因为你很幸运)
>使用SwingUtilities.invokeLater调用从EDT启动UI.
>为什么在Bubbling方法中创建另一个线程对我来说仍然是个谜(从一开始就对整个方法做,或者根本不做)
>在您的情况下,javax.swing.Timer会更合适
>遵循java命名约定(方法以小写字母开头)
这是您的代码更新(但我没有根据上面的评论更改所有内容):
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**