您能帮我如何在Java中使用超级(super.paintComponent(g);
)关键字。
我们可以在Java的paintComponent
方法中使用超级关键字吗?如果我们在main方法中使用super怎么办。甚至有可能吗?
File Drawrainbow.java
package com.company;
import javax.swing.*;
import java.awt.*;
public class DrawRainbow extends JPanel {
// define indigo and violet
private final static Color VIOLET = new Color(128,0,128);
private final static Color INDIGO = new Color(75,0,130);
//colors to use in the rainbow, starting from innermost
// the two white entries result in an empty arc in the center
private Color[] colors ={Color.WHITE, Color.WHITE, VIOLET,INDIGO,Color.BLUE,Color.GREEN,Color.YELLOW,Color.ORANGE,Color.RED};
//constructor
public DrawRainbow(){
setBackground(Color.WHITE); // set the background to while
}
// draws a rainbow using concentric arcs
public void paintComponent(Graphics g){
super.paintComponent(g);
int radius = 20; // radius of an arc
// draw the rainbow near the bottom-center
int centerX = getWidth()/2;
int centerY = getHeight() - 10;
// draws filled arcs starting with the outermost
for (int counter = colors.length; counter > 0; counter--){
// set the color for the current arc
g.setColor(colors[counter-1]);
//fill the arc from 0 to 180 degrees
g.fillArc(centerX-counter*radius,
centerY-counter*radius,
counter*radius*2,counter*radius*2,0,180);
}
}
}
File Test.java
package com.company;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
// write your code here
DrawRainbow panel = new DrawRainbow();
JFrame application = new JFrame();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.add(panel);
application.setSize(400,250);
application.setVisible(true);
}
}
答案 0 :(得分:6)
这里:
> super.paintComponent(g);
在您的DrawRainbow
实例上,您正在调用paintComponent()
的“原始”实现,该实现是从DrawRainbow
的超类继承而来的。
换句话说:当您面对需要
@Override
一种超类方法然后您就这样使用super。
注意:主要方法是静态。静态方法不会被继承,因此进行super.main()
(或任何其他静态方法)毫无意义。
确切地说:您不能覆盖静态方法,如果有的话,您只能“遮盖”它们。
相反,如果您想这样做,可以说MySuperClass.main()
。
答案 1 :(得分:0)
super
通常用于调用父构造函数,但基本上它仅代表父类,并且可用于访问父类的成员