java内部类问题?

发布于 2022-09-06 05:54:53 字数 2424 浏览 16 评论 0

目的是实现一个具有切换圈圈颜色及标签内容的程序

package com.elyong.noway;

/**
 * Created by ely ong on 2017/11/27.
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TwoButtons{
    JFrame frame;
    JLabel label;
    public static void main(String[] args){
        TwoButtons gui=new TwoButtons();
        gui.go();
    }
    public void go(){
        frame=new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JButton labelButton=new JButton("Change Label");
        labelButton.addActionListener(new LabelListener());

        JButton colorButton=new JButton("Change Circle");
        colorButton.addActionListener(new ColorListener());

        label=new JLabel("I'm a label");
        MyDrawPanel drawPanel=new MyDrawPanel();

        frame.getContentPane().add(BorderLayout.SOUTH,colorButton);
        frame.getContentPane().add(BorderLayout.CENTER,drawPanel);
        frame.getContentPane().add(BorderLayout.EAST,labelButton);
        frame.getContentPane().add(BorderLayout.WEST,label);

        frame.setSize(300,300);
        frame.setVisible(true);
    }
    class LabelListener implements ActionListener{
        public void actionPerformed(ActionListener event){
            label.setText("Ouch!");
        }
    }
    class ColorListener implements ActionListener{
        public void actionPerformed(ActionListener event){
            frame.repaint();
        }
    }
}
class MyDrawPanel extends JPanel{
    public void paintComponent(Graphics g){
        Graphics2D g2d=(Graphics2D) g;
        int red=(int)(Math.random()*255);
        int green=(int)(Math.random()*255);
        int blue=(int)(Math.random()*255);
        Color startColor=new Color(red,green,blue);
        red=(int)(Math.random()*255);
        green=(int)(Math.random()*255);
        blue=(int)(Math.random()*255);
        Color endColor=new Color(red,green,blue);
        GradientPaint gradient=new GradientPaint(70,70,startColor,150,150,endColor);
        g2d.setPaint(gradient);
        g2d.fillOval(70,70,100,100);
    }
}

报错:

Error:(32, 5) java: com.elyong.noway.TwoButtons.LabelListener不是抽象的, 并且未覆盖java.awt.event.ActionListener中的抽象方法actionPerformed(java.awt.event.ActionEvent)
Error:(37, 5) java: com.elyong.noway.TwoButtons.ColorListener不是抽象的, 并且未覆盖java.awt.event.ActionListener中的抽象方法actionPerformed(java.awt.event.ActionEvent)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蒗幽 2022-09-13 05:54:53
package com.elyong.noway;

/**
 * Created by ely ong on 2017/11/27.
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TwoButtons{
    JFrame frame;
    JLabel label;
    public static void main(String[] args){
        TwoButtons gui=new TwoButtons();
        gui.go();
    }
    public void go(){
        frame=new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JButton labelButton=new JButton("Change Label");
        labelButton.addActionListener(new LabelListener());

        JButton colorButton=new JButton("Change Circle");
        colorButton.addActionListener(new ColorListener());

        label=new JLabel("I'm a label");
        MyDrawPanel drawPanel=new MyDrawPanel();

        frame.getContentPane().add(BorderLayout.SOUTH,colorButton);
        frame.getContentPane().add(BorderLayout.CENTER,drawPanel);
        frame.getContentPane().add(BorderLayout.EAST,labelButton);
        frame.getContentPane().add(BorderLayout.WEST,label);

        frame.setSize(300,300);
        frame.setVisible(true);
    }
    class LabelListener implements ActionListener
        public void actionPerformed(ActionEvent event){//ActionEvent
            label.setText("Ouch!");
        }
    }
    class ColorListener implements ActionListener{
        public void actionPerformed(ActionEvent event){//ActionEvent
            frame.repaint();
        }
    }
}
class MyDrawPanel extends JPanel{
    public void paintComponent(Graphics g){
        Graphics2D g2d=(Graphics2D) g;
        int red=(int)(Math.random()*255);
        int green=(int)(Math.random()*255);
        int blue=(int)(Math.random()*255);
        Color startColor=new Color(red,green,blue);
        red=(int)(Math.random()*255);
        green=(int)(Math.random()*255);
        blue=(int)(Math.random()*255);
        Color endColor=new Color(red,green,blue);
        GradientPaint gradient=new GradientPaint(70,70,startColor,150,150,endColor);
        g2d.setPaint(gradient);
        g2d.fillOval(70,70,100,100);
    }
}
她比我温柔 2022-09-13 05:54:53

原因就是内部类里面的方法没有加@Override注解。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文