创建新函数而不是重写paintComponent

时间:2015-03-04 15:16:46

标签: java user-interface override

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)”

它不起作用,面板显示什么。背后的原因是什么?

1 个答案:

答案 0 :(得分:1)

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

如果您想命名您的方法

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

您必须确保paintComponent委托此方法,如下所示:

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