Heim > Fragen und Antworten > Hauptteil
两个类,分别的两个jpanel,一个panel为jlist监听,一个里边是button,想实现jlist 触发按钮的状态改变,大概的思路是什么?
PHPz2017-04-18 09:50:29
如果两个 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");
});
}
}