Maison  >  Questions et réponses  >  le corps du texte

java swing类之间监听问题

两个类,分别的两个jpanel,一个panel为jlist监听,一个里边是button,想实现jlist 触发按钮的状态改变,大概的思路是什么?

PHPzPHPz2759 Il y a quelques jours754

répondre à tous(1)je répondrai

  • PHPz

    PHPz2017-04-18 09:50:29

    Si deux JPanels sont instanciés dans un JWindow/JFrame, le bouton et la liste peuvent définitivement accéder l'un à l'autre.

    S'ils sont hérités séparément, ajoutez simplement une interface ou créez un proxy dans le JPanel où se trouve le bouton. J'ai écrit un mot pour toi

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    class MyPanel extends JPanel {
        JButton button;
    
        public MyPanel() {
            button = new JButton("Add To List");
        }
    
        // 方法二,直接把 button 暴露出来
        public JButton getButton() {
            return button;
        }
    
        // 方法一,做个 button.addActionListner 的代理
        public void addButtonListener(ActionListener listener) {
            button.addActionListener(listener);
        }
    }
    
    class ListPanel extends JPanel {
        public void addToList(String item) {
            // TODO
        }
    }
    
    public class Test {
        MyPanel myPanel;
        ListPanel listPanel;
    
        // ....
    
        void setupEvents() {
            // 方法一实现
            myPanel.addButtonListener(e -> {
                listPanel.addToList("hello");
            });
    
            // 方法二实现
            myPanel.getButton().addActionListener(e -> {
                listPanel.addToList("world");
            });
        }
    }

    répondre
    0
  • Annulerrépondre