84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
两个类,分别的两个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 里加个接口或者做个代理就可以了。给你写了段示意