是否可以将事件从实例类传递给父类?将事件从孩子传递给父母
我有一个容器有两个JPanel的JFrame。上面板包含另一个较小的JPanel,并且我已经成功设置了一个MouseListener来在点击小面板时执行命令。我想在点击小面板时在底部面板上显示文字。问题在于事件处理是在上面的面板类中完成的,该面板类无法访问JFrame上其他面板的实例。
这里是低于主窗口的代码:
public CalendarWindow() {
// Set global variables
size = new Dimension(600,600);
setMinimumSize(size);
// Set default window layout and behaviour
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
Container c = getContentPane();
// Create panels and components
eventPanel = new EventPanel(new Dimension(size.width - 30, size.height/3));
CalendarPanel calendarPanel = new CalendarPanel(new Dimension(size.width - 30, size.height*2/3));
// Add components and panels to content pane
c.add(eventPanel, BorderLayout.SOUTH);
c.add(calendarPanel, BorderLayout.NORTH);
}
这是事件内calendarPanel处理:
boxes[i][j].addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(selectedBox != null)
selectedBox.unselect();
selectedBox = (DateBox)e.getSource();
selectedBox.getParent().getParent().dispatchEvent(e);
if(SwingUtilities.isRightMouseButton(e)) {
rightClickMenu menu = new rightClickMenu();
menu.show(e.getComponent(), e.getX(), e.getY());
menu.newEvent.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
selectedBox.addCalendarEvent(new CalendarEvent("Kaupa mjólk", 14, 15));
}
});
}
}
});
的框变量是扩展JPanel一种类型。我怎样才能让CalendarWindow检测到鼠标在上面板上点击?
为什么不只是写一个方法我n'CalendarWindow'调用'public void setClickText(String text)'或类似的东西?这可以在'MouseEvent'触发时从'CalendarPanel'调用。 –
是* eventPanel *扩展* JPanel *? –
calendarPanel是CalendarWindow中的一个实例。我怎么能从calendarPanel调用该方法? – user2750354