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.
Ad ogni modo, grazie per la disponibilità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); } }

Rispondi quotando
