Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [java] Visibilità di object Device in più classi

    Sto iniziando a conoscere le SWT e ho un problemino con queste nuove librerie.
    Ho un main che chiama una classe che disegna una finestra (crea un oggetto display ed uno shell).
    Da questa home creo diversi oggetti a seconda delle operazioni che devo fare (es: inserire nuovo prodotto in DB, eseguire ricerca prodotti, ecc...).
    Il problema è che ogni widget swt che voglio disegnare richiede come parametro un Device.
    Es:
    codice:
    Text text = new Text (Shell, 0);
    dove shell è il device nel quale disegno la edit box di testo.
    Purtroppo nella classe chiamata dal main, dove istanzio ad esempio un TEXT, non viene visto l'object shell dichiarato nella classe home.
    Non va bene passarglielo come parametro al costruttore e con la clausola static non funziona.
    Non credo sia giusto istanziare oggetti display e shell in ogni classe.
    Qual è la soluzione?

    Posto il codice delle due classi e l'errore che mi dà Eclipse:

    codice:
    package provaProdotti;
    
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;
    
    
    public class Home {
    	
    	
    	static Display d;
    	static Shell s;
        
        Home() {
    	d = new Display();
        s = new Shell(d);
        s.setSize(250, 250);
        s.setText("Home");
        s.open();
        
        new GestioneProdotti();
        
        while (!s.isDisposed()) {
          if (!d.readAndDispatch())
            d.sleep();
        }
        d.dispose();
    	
    	
    }	
    	
    
    
    public static void main(String[] argv) {
        new Home();
      }
    }
    
    
    package provaProdotti;
    
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.graphics.Font;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;
    import org.eclipse.swt.widgets.Label;
    
    public class GestioneProdotti {
    
    	
    	
    	
    	
    	GestioneProdotti() {
    	
    	
    	titolo = new Label(s, SWT.CENTER); // s cannot be resolved to a variable!!!
        titolo.setText("Gestione dei prodotti");
        Font newFont = new Font(d, "arial", 14, 1); 
        titolo.setFont(newFont);
        titolo.pack();	
    	                    
    	                    } 
    	
    }

  2. #2
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    non ho tempo di leggere il tuo codice ma posso dirti che utilizzi una variabile statica come se fosse dinamica...
    prova facendo:
    codice:
    	static Display d = new Display();
    	static Shell s = new Shell(d);
    
    ...
    
    GestioneProdotti() {
    	titolo = new Label(Home.s, SWT.CENTER); // s cannot be resolved to a variable!!!

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

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.