【问题标题】:Create new function instead of overriding paintComponent创建新函数而不是覆盖paintComponent
【发布时间】:2015-03-04 15:16:46
【问题描述】:
class MultiplicationTablePanel extends JPanel {
     @Override
      protected void paintComponent(Graphics g) {
        super.paintComponent(g);


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

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

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

【问题讨论】:

    标签: java user-interface overriding


    【解决方案1】:

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

    如果你想命名你的方法

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 2014-08-27
      • 1970-01-01
      相关资源
      最近更新 更多