Bom dia Fernando.
Pensando melhor, existe uma maneira de simplificar esse seu projeto, até porque, já que voce trabalha com sistemas ERP, ficar criando várias instâncias de janelas para janelas, pode acarretar um emaranhado de instâncias e ficar complicado na manutenção destas instâncias.
A menos, é claro, que seja necessário passar as instâncias da classe para outras classes, contudo, se você estiver trabalhando só com eventos, fica mais fácil voce tratar os eventos dentro das classes onde você esta trabalhando com determinada instância, do que na própria classe da instância. Não entendeu :?: Então vamos exemplicar com a classe JPanel1.
public class JPanel1 extends JPanel {
public JPanel1(){
setPreferredSize(new Dimension(400,400));
// Implementações
.......
}
// Outros métodos implementados.
}
Repare que em JPanel1, eu não implementei nenhum evento, isto porque voce pode tratar esses eventos através da instância de JPanel1 dentro do FramePrincipal ou outra classe qualquer, desta forma.
import java.awt.BorderLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class FramePrincipal extends JFrame {
private JLabel coord = null;
public static void main(String args[]){
FramePrincipal frame = new FramePrincipal();
frame.setVisible(true);
}
public FramePrincipal(){
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new BorderLayout());
JPanel1 panel1 = new JPanel1();
panel1.addMouseMotionListener(new MouseMotionAdapter(){
@Override
public void mouseMoved(MouseEvent e) {
// Aqui eu posso jogar o texto direto em JLabel "coord"
coord.setText("Coordenada X = "+e.getX()+" e coordenada Y = "+e.getY());
}
});
getContentPane().add(panel1, BorderLayout.CENTER);
coord = new JLabel();
getContentPane().add(coord, BorderLayout.SOUTH);
pack();
setLocationRelativeTo(null);
}
// Novas Implementações
......
......
}
Repare que o seu código ficou mais enxuto, mais operacional, com execução mais rápida, isto porque o interpretador Java, tem pouco código a interpretar. Se voce executar este último código, verá que surtirá o mesmo efeito do primeiro, com uma pequena diferença, executará, embora de maneira imperceptível, mais rápido, e ocupando menos memória, e isto em aplicações gigantes e complexas, surti um efeito muito mais benéfico, pois a aplicação fica mais leve e funcional.
Eu sempre tenho o costume de enxugar códigos, fazendo a aplicação de maneira mais simples possível, porém que me traga o resultado esperado.
E sempre costumo dizer também que DEUS, através de uma singularidade, criou todo este Universo complexo e maravilhoso.
P.S. Esta implementação mais enxuta que apresentei agora, é válida em se tratando de eventos e métodos e atributos que voce possa acessar diretamente na instância de classes, contudo se não houver outro jeito de acessar esses métodos através de suas instâncias, o jeito é fazer a referência explicada no post anterior.