Visualizzazione dei risultati da 1 a 9 su 9

Discussione: GUI Multilingue

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    17

    GUI Multilingue

    Buongiorno,
    è il mio primo post, siate clementi e soprattutto, rispondetemi numerosi, grazie.
    Sono piuttosto nuovo di java quindi magari sto chiedendo una cosa semplice, mea culpa.
    In ogni caso vorrei realizzare un programmino con una GUI multilingue, in altre parole, ho un menu a tendina con le varie lingue e selezionando la lingua giusta dovrei avere tutta la GUI in quella lingua.
    Sto usando Eclipse e Windowbuilder che rende tutto più semplice, crea lui i file properties, resourcebundle, tutto a posto.
    Ora, ho capito che, dopo aver cambiato il default locale e aver ricaricato il resourcebundle, non è possibile con un metodo aggiornare tutta la GUI (o magari, se è possibile, ditemi come per cortesia).
    Quello che non riesco a fare è aggiornare i vari campi.
    Mi spiego:
    riesco a modificare per esempio il titolo della finestra, così:

    frmMioform.setTitle(Messages.getString("Mioprogram ma.frmMioform.title"));

    ma come modifico il resto? per esempio, come faccio ad aggiornare una voce di menu?

    se faccio:

    mnPrimaVoceMenu.setText(Messages.getString("Miopro gramma.....

    funziona solo se metto la variabile mnPrimaVoceMenu come final (e fin qui mi sta bene)

    Arrivando al dunque:
    avrò una sfilza di setText o setTitle, ecc.

    Vorrei raggruppare queste istruzioni in un metodo ed eseguirlo ogni volta che premo una lingua, ma...
    Dove metto il metodo? Se lo sistemo fuori dal metodo di inizializzazione non va (mi dice mnPrimaVoceMenu cannot be resolved), se lo sistemo dentro non va (mi dice Syntax error on token "public", new expected)

    Non ci capisco più nulla, please, help!

    Grazie,

    Luca

  2. #2
    purtroppo da quel che so ti tocca editare ogni componente a mano ed inoltre dovresti usare l'oggetto Locale http://download.oracle.com/javase/1,...il/Locale.html
    esempio: http://java.sun.com/developer/techni...s/J2SE/locale/

    per risolvere il tuo problema dovresti postare un po di codice cosi che possiamo vedere cio che hai fatto e correggere eventuali errori
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    17
    Bene,
    intanto ti ringrazio tanto per la risposta.
    Dunque, il funzionamento dell'oggetto locale mi è abbastanza chiaro, infatti funziona.
    Il procedimento che ho adottato è proprio settare il

    Locale.setDefault(Locale.ITALY); (o la lingua che voglio)

    caricare il bundle:

    [code]
    ResourceBundle Messages = ResourceBundle.getBundle("sizingtool.messages");
    [/cod€]

    e poi riportare i valori, per esempio:

    codice:
    frmIrSizingTool.setTitle(Messages.getString("IR_SizingTool.frmIrSizingTool.title"));
    Questo funziona alla grande, purchè sia dentro l'evento della voce di menu che premo:

    codice:
    JMenuItem mntmItalian = new JMenuItem(Messages.getString("IR_SizingTool.mntmItalian.text")); 
    
    mntmItalian.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    
    Locale.setDefault(Locale.ITALY);
    
    ResourceBundle Messages = ResourceBundle.getBundle("sizingtool.messages");
    
    frmIrSizingTool.setTitle(Messages.getString("IR_SizingTool.frmIrSizingTool.title")); ---questo funziona comunque
    
    mnFile.setText(Messages.getString("IR_SizingTool.mnFile.text")); --questo funziona, a patto che dichiaro mnFile come final
    
    mnLanguage.setText(Messages.getString("IR_SizingTool.mnLanguage.text")); --questo funziona, a patto che dichiaro mnLanguage come final
    			}
    		});
    Allora, questo codice funziona perfettamente, ma dovrei ripetere tutti gli assegnamenti n volte quante sono le lingue. Questo perchè non sono capace di estrapolare in un metodo tutte queste ripetizioni...mi spiego: io vorrei questo:

    codice:
    frmIrSizingTool.setTitle(Messages.getString("IR_SizingTool.frmIrSizingTool.title"));
    mnFile.setText(Messages.getString("IR_SizingTool.mnFile.text"));
    mnLanguage.setText(Messages.getString("IR_SizingTool.mnLanguage.text"));
    ...
    ...racchiuso in un metodo da richiamare ogni volta che cambio lingua.

    Ho provato a fare:

    codice:
    public void cambiaLingua()
    {
    frmIrSizingTool.setTitle(Messages.getString("IR_SizingTool.frmIrSizingTool.title"));
    mnFile.setText(Messages.getString("IR_SizingTool.mnFile.text"));
    mnLanguage.setText(Messages.getString("IR_SizingTool.mnLanguage.text"));
    ...
    }
    ...ma non so dove metterla.

    Questo è a grandi linee il mio codice, almeno le parti rilevanti:

    codice:
    package sizingtool;
    
    import java.awt.EventQueue;
    ...
    
    public class IR_SizingTool {
    	
    	private JFrame frmIrSizingTool;
    
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    				IR_SizingTool window = new IR_SizingTool();
    					window.frmIrSizingTool.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    
    	}
    
    	public IR_SizingTool() {
    		initialize();
    	}
    
    	public void initialize() {
    			
    		 try {
    		        UIManager.setLookAndFeel(
    		            UIManager.getSystemLookAndFeelClassName());
    		    } 
    		    catch (UnsupportedLookAndFeelException e) {
    		    }
    		    catch (ClassNotFoundException e) {
    		    }
    		    catch (InstantiationException e) {
    		    }
    		    catch (IllegalAccessException e) {
    		    }
        
    		frmIrSizingTool = new JFrame();
    		frmIrSizingTool.setIconImage(Toolkit.getDefaultToolkit().getImage(IR_SizingTool.class.getResource("/images/IR.PNG")));
    		frmIrSizingTool.setTitle(Messages.getString("IR_SizingTool.frmIrSizingTool.title")); 
    		frmIrSizingTool.setBounds(100, 100, 450, 300);
    		frmIrSizingTool.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frmIrSizingTool.getContentPane().setLayout(null);
    		
    		JMenuBar menuBar = new JMenuBar();
    		menuBar.setBounds(0, 0, 442, 23);
    		frmIrSizingTool.getContentPane().add(menuBar);
    		
    		final JMenu mnFile = new JMenu(Messages.getString("IR_SizingTool.mnFile.text_1"));
    		mnFile.setFont(new Font("Dialog", Font.PLAIN, 12));
    		menuBar.add(mnFile);
    				
    		JMenuItem mntmOpen = new JMenuItem(Messages.getString("IR_SizingTool.mntmOpen.text_1"));
    		mntmOpen.setHorizontalAlignment(SwingConstants.LEFT);
    		mntmOpen.setFont(new Font("Dialog", Font.PLAIN, 12));
    		mnFile.add(mntmOpen);
    		
    		JMenuItem mntmExit = new JMenuItem(Messages.getString("IR_SizingTool.mntmExit.text"));
    		mntmExit.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				System.exit(0);
    			}
    		});
    		mntmExit.setHorizontalAlignment(SwingConstants.LEFT);
    		mntmExit.setFont(new Font("Dialog", Font.PLAIN, 12));
    		mnFile.add(mntmExit);
    		
    		final JMenu mnLanguage = new JMenu(Messages.getString("IR_SizingTool.mnLanguage.text"));
    		mnLanguage.setFont(new Font("Dialog", Font.PLAIN, 12));
    		menuBar.add(mnLanguage);
    		
    		JMenuItem mntmEnglish = new JMenuItem(Messages.getString("IR_SizingTool.mntmEnglish.text"));
    		mntmEnglish.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				Locale.setDefault(Locale.ENGLISH);
    				ResourceBundle Messages = ResourceBundle.getBundle("sizingtool.messages");
    				frmIrSizingTool.setTitle(Messages.getString("IR_SizingTool.frmIrSizingTool.title"));
    				mnFile.setText(Messages.getString("IR_SizingTool.mnFile.text"));
    				mnLanguage.setText(Messages.getString("IR_SizingTool.mnLanguage.text"));
    			}
    		});
    		mntmEnglish.setHorizontalAlignment(SwingConstants.LEFT);
    		mntmEnglish.setIcon(new ImageIcon(IR_SizingTool.class.getResource("/images/en.PNG")));
    		mntmEnglish.setFont(new Font("Dialog", Font.PLAIN, 12));
    		mnLanguage.add(mntmEnglish);
    		
    		JMenuItem mntmItalian = new JMenuItem(Messages.getString("IR_SizingTool.mntmItalian.text")); 
    		mntmItalian.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				Locale.setDefault(Locale.ITALY);
    				ResourceBundle Messages = ResourceBundle.getBundle("sizingtool.messages");
    				frmIrSizingTool.setTitle(Messages.getString("IR_SizingTool.frmIrSizingTool.title"));
    				mnFile.setText(Messages.getString("IR_SizingTool.mnFile.text"));
    				mnLanguage.setText(Messages.getString("IR_SizingTool.mnLanguage.text"));
    			}
    		});
    		mntmItalian.setHorizontalAlignment(SwingConstants.LEFT);
    		mntmItalian.setIcon(new ImageIcon(IR_SizingTool.class.getResource("/images/it.PNG")));
    		mntmItalian.setFont(new Font("Dialog", Font.PLAIN, 12));
    		mnLanguage.add(mntmItalian);
    		
    		
    		
    	}
    	
    	
    }
    Dove devo piazzare il metodo cambiaLingua()?
    Pensavo di piazzarlo all'interno della classe IR_SizingTool, giusto?
    Però se lo metto li e scrivo mnFile.setText(... mi sottolinea mnFile e mi dice: mnFile cannot be resolved...

    Cos'è che sbaglio? Sono nuovo di java e non mi è ancora chiarissimo come faccio ad accedere ai vari oggetti e come. Nella mia stupidità pensavo che, dopo aver creato un oggetto tipo JMenu, in qualsiasi punto del programma avrei potuto accedervi semplicemente così: mnNomeMenu.setText("blabla"), ad esempio. Invece ho capito che non posso, anche se non mi sono ancora chiare le regole di queste "limitazioni" (so che non sono limitazioni, ma utili regole di protezione dei linguaggi orientati ad oggetti, solo che sono nuovo e non ci capisco ancora molto). Forse il mio approccio è più procedurale che ad oggetti, per questo faccio un pò di fatica...

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    abbi pazienza, non ho letto il tuo codice (usa i tag code per inserirlo, non perdi l'indentazione e a noi viene più facile leggerlo).

    quando selezioni un oggetto dalla combo devi scatenare un'action (metti appunto un itemChangeListener ad esempio dove fai

    codice:
    //reperisci la info dalla combo, è pseudo codice
    
    String comboValue = comboLingua.getSelectedItem(); 
    //contorlli che non è uguale a quella corrente che hai provveduto a memorizzare in una variaibile opportuna 
    
    if (!comboValue.equals(currentLang)){
       //chiami cambia lingua con il nuovo valore
    
       changeLang(comboValue); 
       currentLang = comboValue; 
    }
    e ricorda che il metodo changeLang in base al valore che passi carica il corretto bundle e aggiorna i valori (e hai parametrizzato tutto).

    Visto che sei nuovo di java fai un po' di pratica con le swing al di fuori degli strumenti IDE perché ci sono concetti che non hai chiarissimi se impari con l'IDE che fa parte del lavoro per te

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    17
    Prima di tutto, grazie anche a te per la risposta.
    Mi scuso per i tag, non sapevo come fare, adesso ho capito.

    Per il resto, scusami, ma non credo di aver capito.
    Il mio problema non è come richiamare il metodo, il mio problema è dove metterlo fisicamente all'interno del codice.

    Te la faccio breve, il programma è strutturato così:
    all'interno del metodo di inizializzazione, ci sono tutti gli elementi, tra cui il menu.
    Nel menu lingua ci sono le varie lingue. Qui ho già fatto un metodo che sente quando viene scelta la voce e cambia locale e carica il bundle. Fin qui non ci sono problemi, tutto funziona.

    Quello che vorrei qualcuno mi spiegasse è: come faccio a raggruppare gli aggiornamenti di tutte le label, i pulsanti, i menu, ecc. tutti in un metodo e richiamarlo ogni volta?
    E soprattutto, dove lo metto fisicamente nel codice?

    Questo è il mio codice:
    codice:
    package sizingtool;
    
    import java.awt.EventQueue;
    ...
    
    public class IR_SizingTool {
    	
    	private JFrame frmIrSizingTool;
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					IR_SizingTool window = new IR_SizingTool();
    					window.frmIrSizingTool.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    
    	}
    
    	/**
    	 * Create the application.
    	 */
    	public IR_SizingTool() {
    		initialize();
    	}
    XXXXXXXXXXXXXXXXXXXXXXXXX
    	/**
    	 * Initialize the contents of the frame.
    	 */
    	
    	public void initialize() {
    		
    		 try {
    			    // Set System L&F
    		        UIManager.setLookAndFeel(
    		            UIManager.getSystemLookAndFeelClassName());
    		    } 
    		    catch (UnsupportedLookAndFeelException e) {
    		       // handle exception
    		    }
    		    catch (ClassNotFoundException e) {
    		       // handle exception
    		    }
    		    catch (InstantiationException e) {
    		       // handle exception
    		    }
    		    catch (IllegalAccessException e) {
    		       // handle exception
    		    }
        
    		frmIrSizingTool = new JFrame();
    		frmIrSizingTool.setIconImage(Toolkit.getDefaultToolkit().getImage(IR_SizingTool.class.getResource("/images/IR.PNG")));
    		frmIrSizingTool.setTitle(Messages.getString("IR_SizingTool.frmIrSizingTool.title")); //$NON-NLS-1$
    		frmIrSizingTool.setBounds(100, 100, 450, 300);
    		frmIrSizingTool.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frmIrSizingTool.getContentPane().setLayout(null);
    		
    		JMenuBar menuBar = new JMenuBar();
    		menuBar.setBounds(0, 0, 442, 23);
    		frmIrSizingTool.getContentPane().add(menuBar);
    		
    		final JMenu mnFile = new JMenu(Messages.getString("IR_SizingTool.mnFile.text_1")); //$NON-NLS-1$
    		mnFile.setFont(new Font("Dialog", Font.PLAIN, 12));
    		menuBar.add(mnFile);
    				
    		final JMenuItem mntmOpen = new JMenuItem(Messages.getString("IR_SizingTool.mntmOpen.text_1"));
    		mntmOpen.setHorizontalAlignment(SwingConstants.LEFT);
    		mntmOpen.setFont(new Font("Dialog", Font.PLAIN, 12));
    		mnFile.add(mntmOpen);
    		
    		final JMenuItem mntmExit = new JMenuItem(Messages.getString("IR_SizingTool.mntmExit.text")); //$NON-NLS-1$
    		mntmExit.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				System.exit(0);
    			}
    		});
    		mntmExit.setHorizontalAlignment(SwingConstants.LEFT);
    		mntmExit.setFont(new Font("Dialog", Font.PLAIN, 12));
    		mnFile.add(mntmExit);
    		
    		final JMenu mnLanguage = new JMenu(Messages.getString("IR_SizingTool.mnLanguage.text")); //$NON-NLS-1$
    		mnLanguage.setFont(new Font("Dialog", Font.PLAIN, 12));
    		menuBar.add(mnLanguage);
    		
    		final JMenuItem mntmEnglish = new JMenuItem(Messages.getString("IR_SizingTool.mntmEnglish.text")); //$NON-NLS-1$
    		mntmEnglish.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				Locale.setDefault(Locale.ENGLISH);
    				ResourceBundle Messages = ResourceBundle.getBundle("sizingtool.messages");
    				frmIrSizingTool.setTitle(Messages.getString("IR_SizingTool.frmIrSizingTool.title"));
    				mnFile.setText(Messages.getString("IR_SizingTool.mnFile.text"));
    				mnLanguage.setText(Messages.getString("IR_SizingTool.mnLanguage.text"));
    				mntmOpen.setText(Messages.getString("IR_SizingTool.mntmOpen.text_1"));
    				mntmExit.setText(Messages.getString("IR_SizingTool.mntmExit.text"));
    			}
    		});
    		mntmEnglish.setHorizontalAlignment(SwingConstants.LEFT);
    		mntmEnglish.setIcon(new ImageIcon(IR_SizingTool.class.getResource("/images/en.PNG")));
    		mntmEnglish.setFont(new Font("Dialog", Font.PLAIN, 12));
    		mnLanguage.add(mntmEnglish);
    		
    		final JMenuItem mntmItalian = new JMenuItem(Messages.getString("IR_SizingTool.mntmItalian.text")); //$NON-NLS-1$
    		mntmItalian.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				Locale.setDefault(Locale.ITALY);
    				ResourceBundle Messages = ResourceBundle.getBundle("sizingtool.messages");
    				frmIrSizingTool.setTitle(Messages.getString("IR_SizingTool.frmIrSizingTool.title"));
    				mnFile.setText(Messages.getString("IR_SizingTool.mnFile.text"));
    				mnLanguage.setText(Messages.getString("IR_SizingTool.mnLanguage.text"));
    				mntmOpen.setText(Messages.getString("IR_SizingTool.mntmOpen.text_1"));
    				mntmExit.setText(Messages.getString("IR_SizingTool.mntmExit.text"));
    			}
    		});
    		mntmItalian.setHorizontalAlignment(SwingConstants.LEFT);
    		mntmItalian.setIcon(new ImageIcon(IR_SizingTool.class.getResource("/images/it.PNG")));
    		mntmItalian.setFont(new Font("Dialog", Font.PLAIN, 12));
    		mnLanguage.add(mntmItalian);
    		
    		JButton btnEnergySavingDryers = new JButton(Messages.getString("IR_SizingTool.btnEnergySavingDryers.text")); //$NON-NLS-1$
    		btnEnergySavingDryers.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    			}
    		});
    		btnEnergySavingDryers.setBounds(10, 34, 145, 51);
    		frmIrSizingTool.getContentPane().add(btnEnergySavingDryers);
    		
    		
    		
    	}
    }
    Questo codice già funziona perfettamente, ma ad ogni lingua devo ripetere le assegnazioni:

    codice:
    frmIrSizingTool.setTitle(Messages.getString("IR_SizingTool.frmIrSizingTool.title"));
    mnFile.setText(Messages.getString("IR_SizingTool.mnFile.text"));
    mnLanguage.setText(Messages.getString("IR_SizingTool.mnLanguage.text"));
    mntmOpen.setText(Messages.getString("IR_SizingTool.mntmOpen.text_1"));
    mntmExit.setText(Messages.getString("IR_SizingTool.mntmExit.text"));
    ...
    L'unica cosa che vi chiedo gentilmente è: ammesso che io crei un metodo tipo questo:

    codice:
    public void changeLanguage()
    {
    frmIrSizingTool.setTitle(Messages.getString("IR_SizingTool.frmIrSizingTool.title"));
    mnFile.setText(Messages.getString("IR_SizingTool.mnFile.text"));
    mnLanguage.setText(Messages.getString("IR_SizingTool.mnLanguage.text"));
    mntmOpen.setText(Messages.getString("IR_SizingTool.mntmOpen.text_1"));
    mntmExit.setText(Messages.getString("IR_SizingTool.mntmExit.text"));
    ...
    }
    Dove lo piazzo all'interno del codice? Se lo piazzo dove ho messo le XXXXXXXXXXXXXXXXXXXXXXXXX
    Mi dice che i vari oggetti tipo "mnFile" cannot be resolved.
    Invece questo, "frmIrSizingTool", posso cambiarlo senza problemi. Questo mi è ancora oscuro.

    Senza tirare in ballo altre questioni di stile che sicuramente non sarà corretto essendo io un novellino, vorrei sapere soltanto come fare per accedere a questi oggetti e perchè questo funziona ovunque lo metto "frmIrSizingTool.setTitle(....)" mentre questo "mnFile.setText(...)" funziona solo se lo metto all'interno di "public void initialize()".

    Grazie

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    e ho capito, ma ti stai perdendo nelle basi: dove metti un'istruzione? dentro qualsiasi blocco!!!!!

    ripeto hai un listener associato alla combo, dentro prelevi la stringa della lingua e chiami il metodo changeLang, non importa dove scrivi questo metodo, l'importante è che lo scrivi.

    Quelle che ti ho indicato non sono scelte stilistiche o dettagli, hai detto che sei nuovo di java, bene forse ti stai imbarcando in qualcosa più grande di te visto che hai problemi con le basi (non tanto con le gui)

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    17
    Fortunatamente sembra la cosa non sia più grande di me visto che ho risolto tutto da solo .

    Sono un novellino di java, questo è vero, ma un testardo e se voglio imparare qualcosa non c'è nulla che mi possa fermare.
    Quello che tu mi hai suggerito di sicuro funzionerà, forse anche meglio dei miei "addActionListener" che suggerisce Eclipse.
    Fatto sta che mi funziona tutto a dovere finalmente.
    Il problema, come avevi detto tu tra l'altro, è che l'IDE faceva del lavoro per me, anche quello che non volevo purtroppo.
    Per risolvere tutti i miei problemi mi è bastato dichiarare i componenti tipo JLabel o JMenu in testa alla classe e non all'interno dell'inizializzazione. In questo modo sono visibili a tutti. Detto così sembra: "cavolo, era così semplice...", si, adesso che me ne sono accorto è semplice, ma prima grandi incazzamenti...

    Grazie comunque a tutti per l'aiuto. Se vi interessa vi faccio vedere la mia soluzione:

    codice:
    package sizingtool;
    
    import java.awt.EventQueue;
    
    import javax.swing.JFrame;
    ...
    
    public class IR_SizingTool {
    	private JMenu mnFile; <---- Ecco la soluzione
    	private JMenuItem mntmOpen; <---- Ecco la soluzione
    	private JMenuItem mntmExit; <---- Ecco la soluzione
    	private JMenu mnLanguage; <---- Ecco la soluzione
    	
    	private JFrame frmIrSizingTool;
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					IR_SizingTool window = new IR_SizingTool();
    					window.frmIrSizingTool.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    
    	}
    
    	/**
    	 * Create the application.
    	 */
    	public IR_SizingTool() {
    		initialize();
    	}
    	public void changeLanguage(ResourceBundle Messages)
    	{
    	frmIrSizingTool.setTitle(Messages.getString("IR_SizingTool.frmIrSizingTool.title"));
    	mnFile.setText(Messages.getString("IR_SizingTool.mnFile.text"));
    	mnLanguage.setText(Messages.getString("IR_SizingTool.mnLanguage.text"));
    	mntmOpen.setText(Messages.getString("IR_SizingTool.mntmOpen.text_1"));
    	mntmExit.setText(Messages.getString("IR_SizingTool.mntmExit.text"));
    	}
    
    	/**
    	 * Initialize the contents of the frame.
    	 */
    	
    	public void initialize() {
    		
    		 try {
    			    // Set System L&F
    		        UIManager.setLookAndFeel(
    		            UIManager.getSystemLookAndFeelClassName());
    		    } 
    		    catch (UnsupportedLookAndFeelException e) {
    		       // handle exception
    		    }
    		    catch (ClassNotFoundException e) {
    		       // handle exception
    		    }
    		    catch (InstantiationException e) {
    		       // handle exception
    		    }
    		    catch (IllegalAccessException e) {
    		       // handle exception
    		    }
        
    		frmIrSizingTool = new JFrame();
    		frmIrSizingTool.setIconImage(Toolkit.getDefaultToolkit().getImage(IR_SizingTool.class.getResource("/images/IR.PNG")));
    		frmIrSizingTool.setTitle(Messages.getString("IR_SizingTool.frmIrSizingTool.title")); //$NON-NLS-1$
    		frmIrSizingTool.setBounds(100, 100, 450, 300);
    		frmIrSizingTool.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frmIrSizingTool.getContentPane().setLayout(null);
    		
    		JMenuBar menuBar = new JMenuBar();
    		menuBar.setBounds(0, 0, 442, 23);
    		frmIrSizingTool.getContentPane().add(menuBar);
    
    Eclipse invece me li dichiarava così : JMenu mnFile = new JMenu(....		
    qui ---------->	mnFile = new JMenu(Messages.getString("IR_SizingTool.mnFile.text_1")); //$NON-NLS-1$
    		mnFile.setFont(new Font("Dialog", Font.PLAIN, 12));
    		menuBar.add(mnFile);
    				
    		mntmOpen = new JMenuItem(Messages.getString("IR_SizingTool.mntmOpen.text_1"));
    		mntmOpen.setHorizontalAlignment(SwingConstants.LEFT);
    		mntmOpen.setFont(new Font("Dialog", Font.PLAIN, 12));
    		mnFile.add(mntmOpen);
    		
    		mntmExit = new JMenuItem(Messages.getString("IR_SizingTool.mntmExit.text")); //$NON-NLS-1$
    		mntmExit.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				System.exit(0);
    			}
    		});
    		mntmExit.setHorizontalAlignment(SwingConstants.LEFT);
    		mntmExit.setFont(new Font("Dialog", Font.PLAIN, 12));
    		mnFile.add(mntmExit);
    		
    		mnLanguage = new JMenu(Messages.getString("IR_SizingTool.mnLanguage.text")); //$NON-NLS-1$
    		mnLanguage.setFont(new Font("Dialog", Font.PLAIN, 12));
    		menuBar.add(mnLanguage);
    		
    		final JMenuItem mntmEnglish = new JMenuItem(Messages.getString("IR_SizingTool.mntmEnglish.text")); //$NON-NLS-1$
    		mntmEnglish.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				Locale.setDefault(Locale.ENGLISH);
    				ResourceBundle Messages = ResourceBundle.getBundle("sizingtool.messages");
    				changeLanguage(Messages);
    			}
    		});
    		mntmEnglish.setHorizontalAlignment(SwingConstants.LEFT);
    		mntmEnglish.setIcon(new ImageIcon(IR_SizingTool.class.getResource("/images/en.PNG")));
    		mntmEnglish.setFont(new Font("Dialog", Font.PLAIN, 12));
    		mnLanguage.add(mntmEnglish);
    		
    		final JMenuItem mntmItalian = new JMenuItem(Messages.getString("IR_SizingTool.mntmItalian.text")); //$NON-NLS-1$
    		mntmItalian.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				Locale.setDefault(Locale.ITALY);
    				ResourceBundle Messages = ResourceBundle.getBundle("sizingtool.messages");
    				changeLanguage(Messages);
    			}
    		});
    		mntmItalian.setHorizontalAlignment(SwingConstants.LEFT);
    		mntmItalian.setIcon(new ImageIcon(IR_SizingTool.class.getResource("/images/it.PNG")));
    		mntmItalian.setFont(new Font("Dialog", Font.PLAIN, 12));
    		mnLanguage.add(mntmItalian);
    		
    		JButton btnEnergySavingDryers = new JButton(Messages.getString("IR_SizingTool.btnEnergySavingDryers.text")); //$NON-NLS-1$
    		btnEnergySavingDryers.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    			}
    		});
    		btnEnergySavingDryers.setBounds(10, 34, 145, 51);
    		frmIrSizingTool.getContentPane().add(btnEnergySavingDryers);
    		
    		
    		
    	}
    }

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    si ma infatti bisogna essere testardi per imparare, ma la domanda "dove metto un pezzo di codice" tenuto conto che cercavi di accedere ad una variabile per cui non avevi scope rimarca il fatto che queste cose che sono basilari non le sai o comunque le hai fatte alla carlona.

    Il fatto che eclipse abbia generato il codice per te (con il window maker) è anche sintomo che in realtà non sai cosa stai facendo (visto che se avessi dovuto fare una roba del genere a mano avresti sicuramente avuto molti più problemi).

    Mi fa piacere che hai risolto, ma ti consiglio di partire dalle basi se vuoi andare avanti, programmare non è un giochino che con l'IDE fico fai tutto, te lo ha dimostrato questa piccola applicazione. Quando sai fare le stesse cose anche senza l'IDE hai davvero capito come funziona tutto.

    ps io avevo capito tu usassi una combo box per la scelta dlela lingua, non un menu

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    17
    Grazie dei consigli, dal basso della mia ignoranza non posso che apprezzarli.
    E' vero, come dicevo sono un novellino in java e ho qualche difficoltà con i linguaggi orientati ad oggetti, ma so bene cosa vuol dire programmare, anche se, un dinosauro come me è più ferrato in linguaggi procedurali.
    Ti ripeto, grazie, apprezzo l'aiuto e i consigli, ma non vorrei dare l'impressione di uno sprovveduto che pensa di saper "usare" il computer solo perchè conosce il pacchetto office.
    Anche se son passati diversi anni sono sempre uno che si è diplomato in informatica con 60/60 (si, quella volta esistevano ancora i sessantesimi), quindi, anche se sono arrugginito, so di che cosa parlo.
    Messe in chiaro le cose, è ovvio che mi piacerebbe fare tutto come si deve, farmi un bel corso, esercitazioni, ecc. ecc., come mi piacerebbe tornare bambino e imparare a suonare la chitarra, ma non sempre c'è tempo di fare tutto.
    A volte serve qualcosa e serve subito. Penso che un forum serva tra le altre cose anche a questo, per risolvere dei problemi in maniera rapida sentendo l'opinione di chi le cose le sa già senza perdere tempo a cercarle da soli (ripeto, non perchè non ci sia la volontà, a volte non c'è proprio la possibilità).
    Detto questo, ti ringrazio per l'ultima volta e torno ai miei esperimenti.

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.