Java:按需重写方法
我是否能够根据需要重写方法?我有一个扩展JFrame的类,里面有一个JPanel。我想在JPanel中画一个圆,但我不想为JPanel创建自己的类(这样我就可以覆盖paintComponent)。我的想法是这样的:Java:按需重写方法,java,overriding,anonymous-class,Java,Overriding,Anonymous Class,我是否能够根据需要重写方法?我有一个扩展JFrame的类,里面有一个JPanel。我想在JPanel中画一个圆,但我不想为JPanel创建自己的类(这样我就可以覆盖paintComponent)。我的想法是这样的: public class KugelClient extends JFrame { public KugelClient() { super("KugelClient"); JPanel panel = new JPanel(); panel.paintC
public class KugelClient extends JFrame {
public KugelClient() {
super("KugelClient");
JPanel panel = new JPanel();
panel.paintComponent(Graphics g) {
//overriding method here
g.fillOval(...);
}
}
JPanel panel = new JPanel() {
//overriding method here
public void paintComponent(Graphics g) {
g.fillOval(...);
}
};
Java中是否有任何东西可以执行类似的操作(例如,使用lambda?),或者我必须为面板创建自己的类?您可以使用重写的
paintComponent()
方法创建JPanel
的匿名子类。大概是这样的:
public class KugelClient extends JFrame {
public KugelClient() {
super("KugelClient");
JPanel panel = new JPanel();
panel.paintComponent(Graphics g) {
//overriding method here
g.fillOval(...);
}
}
JPanel panel = new JPanel() {
//overriding method here
public void paintComponent(Graphics g) {
g.fillOval(...);
}
};
是的,它叫匿名类。Java8中也有lambdas。你想按需实现哪个接口/方法?我想覆盖面板内的paintComponent方法,这样我就可以在其中画一个圆。啊哈,明白了。马上我会发布一个asnwer。谢谢,这正是我想要的!使用lambda会是什么样子?比我快几秒钟。lambda只适用于所谓的函数接口(即带有一个抽象方法的接口)。这意味着它不能表示为lambda。