我有一个名为Menu的菜单类,它定义了一个JFrame,这个类实例化了两个包含文本字段和按钮的JPanel对象。每个JPanel扩展类中都有一个私有内部类,它处理按下按钮触发的事件。
我想知道Menu类是否有办法从JPanels内的按钮检测触发事件。
你可以在Menu类的JPanel中添加一个监听器并执行类似的操作吗? :
if(event.getSource() == panel.getButton1()){
//do button1 code
}
答案 0 :(得分:3)
JPanels实际上所有Swing组件都具有属性更改支持,因此您可以轻松地将PropertyChangeListener添加到任何Component并监听状态更改。请确保在状态发生变化的代码中,在状态发生变化后调用firePropertyChange(...)
。
答案 1 :(得分:1)
您始终可以向组件添加侦听器(例如ActionListener
个实例)并处理它们。
在设计方面,您应该考虑拆分菜单/布局和事件处理,即使用单独的控制器来监听事件并处理它们。