Me pregunto acerca de la práctica estándar con clases internas (en Java, pero supongo que se aplica a todos los lenguajes OO). Así que tengo una subclase JFrame ControllerWindow
que contiene una subclase JPanel MapPanel
que dibujo (por lo que necesita sobrescribir el método paintComponent) y que necesita implementar un detector de mouse. Mi solución actual que funciona es tener MapPanel
en una clase separada implementando MouseListener, pero cuando le mostré esto al chico que dirige mi curso el otro día pareció pensar (tenemos un poco de barrera de idioma) esto debería ser en un interior clase en ControllerWindow
o al menos el MouseListener debe ser una clase interna.Estándares para usar clases internas para GUI?
Así que mi pregunta es, ¿cuál sería la solución estándar aquí, para poner un MouseListener en la clase interna, el JPanel en una clase interna diferente o todavía en su clase separada? ¿JPanel implementa MouseListener en una clase interna? ¿Y por qué?
Lo más importante para mí es que funciona, pero me gustaría conocer y entender las prácticas estándar detrás de estas cosas si es posible.
EDITAR: Versión muy simplificada del código actual a continuación.
class ControllerWindow extends JFrame{
...
MapPanel drawPanel = new MapPanel();
...
}
y una clase separada:
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){}
}
también podría ser esto una situación en la que sería aceptable para poner las dos clases en el mismo archivo? No preveo usar MapPanel
para nada que no sea ControllerWindow
.
La práctica estándar para el código GUI es una gran bola de barro. –
¿Podría proporcionar algún código? Simplificado si es necesario. – amorfis