[英]JButton inside JInternalFrame won't trigger the ActionListener
我想检查InternalFrame下的ActionListener是否正常。 但是实现ActionListener的内部类不会读取注册的按钮。 有什么原因吗?
EmployeeFrameView
public class EmployeeFrameView extends JInternalFrame
{
JButton button;
public EmployeeFrameView()
{
super("AddEmployee",true,true,true,true);
addComponentsToPane(getContentPane());
pack();
setVisible(true);
setLocation(xOffset,yOffset);
}
private void addComponentsToPane(final Container pane)
{
final JPanel content = new JPanel();
panelEmployee = new JPanel();
//Add to content and set layout
content.setLayout(new BorderLayout());
content.add(addComponentsToEmployeePanel(panelEmployee),BorderLayout.NORTH);
//Adding ScrollPane to Container.
final JScrollPane scrollPane = new JScrollPane(content, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
pane.add(scrollPane);
}
private JPanel addComponentsToEmployeePanel(JPanel panelEmployee)
{
panelEmployee.setLayout(grid);
gbc.gridx = 0;
gbc.gridy = 1;
button = new JButton("Button");
panelEmployee.add(button, gbc);
}
public void addAction(ActionListener l )
{
button.addActionListener(l);
}
}
EmployeeFrameController
public class EmployeeFrameController
{
EmployeeFrameView theView;
public EmployeeFrameController(EmployeeFrameView theView)
{
this.theView = theView;
this.theView.addAction(new addAction());
}
class addAction implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
System.out.println("Working");
}
}
}
主要
public class Main
{
public static void main(String[] args)
{
EmployeeFrameView employeeFrameView = new EmployeeFrameView();
EmployeeFrameController employeeFrameController = new EmployeeFrameController(employeeFrameView);
}
}
我看不到您发布的代码有任何问题。 可能您的问题在代码中未包含的位置(我敢打赌会弄乱引用,因为您未包含将按钮添加到屏幕中的代码)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.