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:dove shell è il device nel quale disegno la edit box di testo.codice:Text text = new Text (Shell, 0);
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(); } }

Rispondi quotando