Grazie [QUOTE=Ansharja;25484141]
non sapevo che il codice postato dovesse essere funzionante; ad ogni modo ho difficoltà a mettere tutto il codice perché il progetto è grande e con la separazione tra controllo e vista è un po' complicato creare qualcosa di funzionante, provo comunque a postare una buona parte della logica della creazione della texfield e compagni, sperando che possa essere utile per la risoluzione del problema.
Inoltre la creazione dell'interfaccia grafica parte dalla lettura di un file csv, dal quale individua il numero di colonne.
codice:
private JTextField[] dataField;
public void initComponentsForInsert(String[] names) {
this.dataField = new JTextField[names.length];
getContentPane().removeAll();
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
JPanel p = new JPanel();
p.setLayout(new GridLayout(names.length, 2, 5, 5));
for (int i = 0; i < names.length - 1; i++) {
JLabel label;
if (i == 0 || i == 5 || i == 7 || i == 9 || i == 10) {
label = new JLabel(names[i] + " *");
} else {
label = new JLabel(names[i]);
}
label.setHorizontalAlignment(JLabel.RIGHT);
label.setBorder(new EmptyBorder(5, 5, 5, 5));
label.setName("label_" + i);
if (i != 4) {
JTextField field = new JTextField();
field.setColumns(20);
field.setName("field_" + i);
dataField[i] = field;
p.add(label);
p.add(field);
} else {
createCombo();
comboBox.setName("field_" + i);
p.add(label);
p.add(comboBox);
}
}
getContentPane().add(p);
JPanel panel_Button = new JPanel();
panel_Button.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
btn_Ok = new JButton();
panel_Button.add(btn_Ok);
btn_Ok.setAction(control.getAction(Constants.ACTION_CONFIRM_INSERT_STATION));
btn_Cancel = new JButton();
panel_Button.add(btn_Cancel);
btn_Cancel.setAction(control.getAction(Constants.ACTION_CANCEL_INSERT_STATION));
getContentPane().add(panel_Button);
}
//Richiamo la creazione della dialog in un pannello
public void insertStation() {
StationDialog stationDialog = (StationDialog) viewStationsFrame.getSubView(Constants.STATION_DIALOG);
StationsModel stationsModel = (StationsModel) table_Stations.getModel();
stationDialog.initComponentsForInsert(stationsModel.columnNames);
stationDialog.pack();
stationDialog.setVisible(true);
}
//Quindi nell'azione ho
public void actionPerformed(ActionEvent e) {
ViewStationsFrame stationsFrame = (ViewStationsFrame) this.control.getView().getSubView(Constants.VIEW_STATIONS_FRAME);
try {
StationsPanel panelStations = stationsFrame.getStationsPanel();
panelStations.insertStation();
} catch (Exception ex) {
String msg = ex.getMessage() + System.getProperty("line.separator") + ex.getCause().toString();
logger.error(msg);
stationsFrame.windowError("Errore", msg);
}
}
Ad ogni modo, grazie per la disponibilità