【问题标题】:i want to make my actionlistener on a separete class but it doesnt seem to work我想让我的 actionlistener 在一个单独的类上,但它似乎不起作用
【发布时间】:2019-12-07 23:35:53
【问题描述】:

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

   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 swing class jframe actionlistener


    【解决方案1】:

    为什么需要一个动作类?您不需要覆盖 actionListener。你为你的主类实现了 ActionListener 吗?

     @Override
      public void actionPerformed(ActionEvent e){ // your code};
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-11
      • 2021-10-05
      • 2020-12-22
      • 2016-10-19
      • 1970-01-01
      • 2017-11-25
      • 1970-01-01
      相关资源
      最近更新 更多