Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建新函数,而不是重写组件_Java_User Interface_Overriding - Fatal编程技术网

Java 创建新函数,而不是重写组件

Java 创建新函数,而不是重写组件,java,user-interface,overriding,Java,User Interface,Overriding,若我想在面板上画一些东西,我需要重写paintComponent函数。如果我想创建一个新函数而不是重写,例如 “受保护的组件(图形g)” 它不工作,面板上什么也没显示。背后的原因是什么?这是因为在绘制组件时,Swing将调用paintComponent。如果你发明了一个新方法,Swing就不会知道,也不会被调用 如果你想命名你的方法 class MultiplicationTablePanel extends JPanel { @Override protected voi

若我想在面板上画一些东西,我需要重写paintComponent函数。如果我想创建一个新函数而不是重写,例如 “受保护的组件(图形g)”


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

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

如果你想命名你的方法

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


        g.drawString("Multiplication Table", 0, 0);
您必须确保
paintComponent
按如下方式委托使用此方法:

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