Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/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_Overriding_Anonymous Class - Fatal编程技术网

Java:按需重写方法

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

我是否能够根据需要重写方法?我有一个扩展JFrame的类,里面有一个JPanel。我想在JPanel中画一个圆,但我不想为JPanel创建自己的类(这样我就可以覆盖paintComponent)。我的想法是这样的:

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。