我想让我的动作侦听器在一个单独的类上,但似乎不起作用

问题描述 投票:-1回答:1

我尝试了许多从另一个类添加另一个方法的实现方式,以便使其正常工作,但是我仍然无法做到这一点。所以我的主要方法很简单:

   public class Main {
   public static void main(String[] args) {
   new frame();
   }}

问题出在我的框架类上,当我将动作监听器放在我的框架方法上时,它可以正常工作,但是当我将其放在另一个类上时,在这种情况下,我的动作类在任何情况下都无法正常工作意味着...

  public class frame{
  buttons b = new buttons();
  public JFrame f1 = new JFrame("logging in...");
  public JPanel p = new JPanel();
  public frame() {
    frames();
    new actions(); }
  public void frames(){
    p.setLayout(null);
    p.setBackground(Color.yellow);
    b.b1.setIcon(new ImageIcon("C:\\Users\\User\\Pictures\\heroes-icons-large.jpg"));
    b.img.setIcon(new ImageIcon("C:\\Users\\User\\Pictures\\lock screen.jpg"));
    p.add(b.lab);
    p.add(b.lab3);
    p.add(b.lab2);
    p.add(b.b1);
    p.add(b.t1);
    p.add(b.t2);
    p.add(b.img);
    f1.pack();
    f1.setSize(340,300);
    f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f1.setLocationRelativeTo(null);
    f1.add(p);
    f1.setVisible(true); }}

当然我在另一个类上做了按钮标签等,我认为我不需要在这里编写它,所以这是我的动作类,似乎有问题:

  public class actions {
  buttons b = new buttons();
  public actions(){
    a1(); }
  public void a1(){
    b.b1.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            b.lab.setText("it works!");
        }});}}

请帮助我,我有点新,所以可能有些事我不知道/我可能会丢失,但是请相信我,我尝试了很多。谢谢您的时间。

java class methods jframe actionlistener
1个回答
0
投票

您为什么需要动作班?您无需覆盖actionListener。您是否为主类实现了ActionListener?

 @Override
  public void actionPerformed(ActionEvent e){ // your code};
© www.soinside.com 2019 - 2024. All rights reserved.