我想知道内部类的标准做法(在 Java 中,但我想它适用于所有 OO 语言)。所以我有一个 JFrame 子类ControllerWindow
,它包含一个MapPanel
我绘制的 JPanel 子类(因此它需要覆盖paintComponent 方法)并且需要实现鼠标侦听器。我目前可行的解决方案是MapPanel
在一个单独的类中实现 MouseListener 但是当我向前几天运行我课程的人展示这个时,他似乎认为(我们有一点语言障碍)这应该在一个内部类中在ControllerWindow
或至少 MouseListener 应该是一个内部类。
所以我的问题是这里的标准解决方案是什么,将 MouseListener 放在内部类中,将 JPanel 放在不同的内部类中还是仍然在其单独的类中?在一个内部类中实现 MouseListener 的 JPanel?为什么?
对我来说最重要的是它有效,但如果可能的话,我想了解和理解这些东西背后的标准做法。
编辑:下面当前代码的非常简化的版本。
class ControllerWindow extends JFrame{
...
MapPanel drawPanel = new MapPanel();
...
}
和一个单独的类:
class MapPanel extends JPanel implements MouseListener{
...
public void paintComponent(Graphics g){
...//fillRects etc.
}
//MouseListener methods
public void mouseReleased(MouseEvent e){
requestFocus();
...
repaint()
...
}
public void mousePressed(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
}
这也可能是可以接受将两个类放在同一个文件中的情况吗?我不打算将MapPanel
其用于ControllerWindow
.