创建新函数而不是覆盖 paintComponent

Create new function instead of overriding paintComponent

class MultiplicationTablePanel extends JPanel {
     @Override
      protected void paintComponent(Graphics g) {
        super.paintComponent(g);


        g.drawString("Multiplication Table", 0, 0);

如果我想在Panel上画东西,我需要重写paintComponent函数。如果我想创建一个新函数而不是覆盖,例如 "protected void testPaintComponent(Graphics g)"

不行,面板什么都不显示。背后的原因是什么?

这是因为 Swing 会在应该绘制组件时调用 paintComponent。如果您发明了一种新方法,Swing 不会知道它,也不会调用它。

如果你想命名你的方法

protected void testPaintComponent(Graphics g) { ... }

您必须确保 paintComponent 按如下方式委托此方法:

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    testPaintComponent(g);
}