Не удается получить общедоступный класс GUI расширяет Frame реализует ActionListener работает - PullRequest
0 голосов
/ 08 марта 2019

Скриншот фрагмента из моего кода

import java.awt.*; 
import java.awt.event.*;
import java.awt.image.BufferedImage; 
import java.io.*;
import javax.imageio.ImageIO; 
import javax.swing.*;

public class GUI extends Frame implements ActionListener
{
 private TextField buy = new TextField(30);
 private Button appl;

 public GUI(){
    super("GUI");
    setLayout(new FlowLayout());
    setSize(400,150);
    setTitle("Stock Market Exchange");
    setVisible(true);

    aapl = new Button("Buy AAPL share");
    add(aapl);
    aapl.setEnabled(true);
    aapl.setBounds(35,6,112,36);
    aapl.setBackground(new Color(214,217,223));
    aapl.setForeground(new Color(0,0,0));
    aapl.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent evt){
            createAAPLshare();
        }
    });
    add(buy);
    aapl.setVisible(true);
}

«Открытый класс GUI расширяет Frame реализует ActionListener» - продолжает возвращать ошибку, потому что GUI не является абстрактным и не может переопределить actionPerformed (java.awt.event.ActionEvent) в java.awt.event.ActionListener. Но я просто не могу понять, где именно и почему эта ошибка продолжает возвращаться. Я пытался найти различные методы, чтобы исправить это, но все еще есть ошибка компилятора. Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Вам не хватает именно того, что говорит ошибка: конкретная реализация метода actionPerformed() (поскольку вы реализуете интерфейс ActionListener)

Либо предоставьте реализацию этого метода в своем классе GUI (и используйте его соответствующим образом в одном или нескольких компонентах вашего класса GUI), либо удалите часть implements ActionListener из своего класса, если она вам не нужна

Для первого добавьте реализацию метода в своем классе:

public void actionPerformed(ActionEvent evt){
            createAAPLshare();
}

А потом в соответствующей части:

aapl.addActionListener(this);

Для последнего просто оставьте свой код как есть, но удалите implements ActionListener из вашей подписи класса

В любом случае должно работать, вы выбираете

0 голосов
/ 08 марта 2019

Это просто означает, что вам нужно предоставить реализацию для actionPerformed ().ActionListener - это интерфейс, поэтому, если вы реализуете его в классе, вы должны иметь какие-либо методы в интерфейсе, заполненные где-то в вашем классе.Эта страница должна дать вам больше информации: https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

...