作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
你能帮我看看如何在 Java 中使用 super (super.paintComponent(g);
) 关键字吗。
我们可以在 Java 的 paintComponent
方法中使用 super 关键字吗?如果我们在 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);
}
}
最佳答案
这里:
> super.paintComponent(g);
在您的 DrawRainbow
实例上,您正在调用继承自 DrawRainbow
父类(super class)的 paintComponent()
的“原始”实现。
换句话说:当你面临需要时
@Override
父类(super class)方法然后你像那样使用 super。
注意:主要方法是static。静态方法不是继承的,因此没有必要执行 super.main()
(或任何其他静态方法)。准确地说:您不能覆盖静态方法,如果有的话,您只能“隐藏”它们。
相反,如果您想这样做,您可以说 MySuperClass.main()
。
关于java - 如何在 Java 中使用 super ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56162297/
我是一名优秀的程序员,十分优秀!