Pessoal, estou com uma dúvida simples mas que gostaria de um certo esclarecimento:
Tenho uma aplicação Java desenvolvida em cima do padrão de projeto MVC. Para desenvolver a interface gráfica da aplicação eu utilizo componentes Swing que, pelo fato da aplicação ser simples e pensada apenas para estudo, são componentes padrão. Isto é, componentes vindos da própria paleta do IDE e editados pelas propriedades disponíveis…
Sei que muitos programadores criam seus próprios componentes personalizados que estendem as classes dos componentes Swing, o que não é o caso atual.
Para contornar a limitação dos componentes padrão do Swing, pensei em criar uma classe à parte que sirva como portadora dos métodos dos quais sinto falta. Por exemplo, na aplicação preciso ter um método que limpe o texto de todos os JTextComponent que estiverem em cima de um JPanel, e creio eu que não exista um método padrão no JPanel Swing que realize isso. Então utilizaria esta classe à parte, chamando este método toda vez que quisesse limpar um JPanel qualquer.
Gostaria de saber se esta ideia faz sentido e se, por acaso, a classe à parte (enquadrada como uma classe de “modelo”) feriria as regras do padrão MVC.
Deixo um exemplo do método de limpeza dos JTextComponent dentro de um JPanel que comentei.
package home.room.models;
// @author Rodrigo Alberto;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.text.JTextComponent;
public class UtilidadesSwing {
public void cleanFields(JPanel panel) {
JTextComponent textComponent;
for (int i = 0; i < panel.getComponentCount(); i++) {
if(JTextComponent.class.isAssignableFrom(panel.getComponent(i).getClass())){System.out.println("BB"+panel.getComponent(i).getName());
textComponent = (JTextComponent) panel.getComponent(i);
textComponent.setText("");
}else{
try {
if(panel.getComponent(i).getClass().equals(JScrollPane.class)) {
JScrollPane scrollPane = (JScrollPane) panel.getComponent(i);
textComponent = (JTextComponent) scrollPane.getViewport().getComponent(0);
textComponent.setText("");
}else {
JComponent component = (JComponent) panel.getComponent(i);
for (int j = 0; j < component.getComponentCount(); j++) {
textComponent = (JTextComponent) component.getComponent(j);
textComponent.setText("");
}
}
} catch (ClassCastException e) {
System.out.println("\nERRO: "+e);
}
}
}
}
}