84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
两个类,分别的两个jpanel,一个panel为jlist监听,一个里边是button,想实现jlist 触发按钮的状态改变,大概的思路是什么?
学习是最好的投资!
如果两个 JPanel 都是在一个 JWindow/JFrame 中实例化的,button 和 list 肯定可以互相访问。
如果是分别继承出来的,在 button 所在的那个 JPanel 里加个接口或者做个代理就可以了。给你写了段示意
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"); }); } }
如果两个 JPanel 都是在一个 JWindow/JFrame 中实例化的,button 和 list 肯定可以互相访问。
如果是分别继承出来的,在 button 所在的那个 JPanel 里加个接口或者做个代理就可以了。给你写了段示意