Visualizzazione dei risultati da 1 a 10 su 12

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310
    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à

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Guarda che questo pezzo di codice l'ho provato (compila senza errori) e FUNZIONA. Ovvero se scelgo "I" il textfield si abilita e posso scriverci. Se scelgo altro, il textfield si disabilita e non posso usarlo.
    Un attimo, quello è un esempio di codice che ho fatto io per mostrare a @cerza che aggiungendo il minimo necessario per far partire il suo programma l 'abilitazione/disabilitazione del field funziona.
    Come ho detto il codice è piuttosto rozzo (il JComboBox non è parametrizzato, non si capisce se abbia senso usare una dialog non vedendo il collegamento con un parent frame (anche se viene passato come parametro al costruttore) etc., volevo solo far vedere che senza informazioni in più non si può capire cosa non vada.

    Quote Originariamente inviata da cerza Visualizza il messaggio

    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 numer
    Quello che ho detto nel messaggio precedente non è una regola e in molti casi non serve nemmeno, se scrivi sul forum per avere un consiglio generale, per chiedere un aiuto su un singolo metodo (es. algoritmo/metodo che non funziona), per una domanda secca e molto altro non è necessario mettere il codice completo.

    Tuttavia quando si ha un problema legato a un interfaccia grafica o a qualcosa di più articolato di un semplice programmino, è utile poter avere a portata di mano tutto il codice rilevante.
    Nei link che ho postato si spiega che il codice dovrebbe esser minimo proprio per questo : non ha alcuna importanza che ci sia tutta la logica, ma solo la parte grafica, con i minimi componenti necessari a riprodurre il problema (quindi nel tuo caso basta UN textfield e un combobox).
    Tutto il resto può essere tolto dall esempio, e i valori letti da file/database o altro possono essere inseriti direttamente nel codice (sempre che serva).

    Nel tuo caso non si capisce ad esempio se il combo box e il textfield che usi nel listener vengano effettivamente aggiunti e dove ...

  3. #3
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310
    Grazie Ansharja per la pazienza,

    ok non ho capito appieno il concetto di "codice funzionante", spero di essere più chiara la prossima volta.
    In merito all'assegnazione della combo e delle textField, queste vengono aggiunte al pannello
    codice:
    p.add(field);
    p.add(comboBox);
    ed infine il pannello p viene aggiunto al
    codice:
    getContentPane().add(p);
    per cui se poteva esserci qualcosa che non andava non avrei dovuto vederle neanche a video.
    Ad ogni modo so che il codice fornito da te funziona ma non riesco a trovare il motivo per cui integrato nella mia interfaccia smette di farlo.

    Grazie ancora

  4. #4
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310
    Grazie Ansharja,

    grazie alla tua osservazione ho risolto, in effetti il listener non veniva associato al componente JComboBox corretto.

    Grazie ancora a tutti

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Ansharja Visualizza il messaggio
    Un attimo, quello è un esempio di codice che ho fatto io
    Sì, è vero, sorry. Sono un po' fuso io oggi pomeriggio ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.