Newsgroup: it.comp.java
Titolo: passare una variabile

Qualcuno mi può dire se quello che segue è corretto? Per funzionare, 
funziona, ma vorrei sapere se è corretto:
 
public class MENU extends javax.swing.JFrame {
     /**
      * Creates new form MENU
      */
     public MENU() {
         initComponents();
         setTitle("MENU PRINCIPALE");
         /* setLocation(100,100); */
         CenterForm();
     }
 
     public void CenterForm() {
      Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();
         this.setSize(screenSize.width * 1/2,screenSize.height * 1/2);
         Dimension frameSize = this.getSize();
         this.setLocation((screenSize.width - frameSize.width) / 2, 
(screenSize.height - frameSize.height) / 2);
      }
 
Volevo portare CenterForm fuori dalla class MENU, farne una classe 
richiamabile da qualsiasi form dell'applicazione. La domanda è, come 
passo la variabile form alla classe CenterForm.
 
-- 
Gulp®
(forse mi sono perso qualcosa :))


E quale sarebbe la variabile form?
Un paio di consigli che potranno venirti utili, ad esempio rispettando 
le convenzioni:
- i nomi tutti in maiuscolo dovrebbero essere riservati alle costanti 
ovvero quelle variabili definite come static final
- i nomi delle classi dovrebbero iniziare con una lettera maiuscola e 
proseguire con il cosiddetto camel-case
- i nomi dei metodi e delle variabili dovrebbero iniziare con una 
lettera minuscole e proseguire in camel-case
 
Inoltre, Java e' multipiattaforma, quindi rispettare le convenzioni 
della piattaforma non sarebbe male. Ti segnalo, ad esempio, che tutte le 
classi awt che derivano da Window, quindi anche le classi swing, in 
particolare anche JFrame, ereditano il metodo 
setLocationByPlatform(boolean).
Sempre relatiamente alla piattaforma, il metodo 
Toolkit.getDefaultToolkit().getScreenSize() potrebbe non restituire le 
dimensioni effettive dello schermo fisico, ma quelle del desktop 
virtuale, in particolare in ambiente multiscreen.
 
Venendo alla tua esigenza, fare di CenterForm una classe, non misembra 
di grande utilità, lo vedrei piu' come metodo staic di una classe di 
utility, ad esempio
public final class Utils {
    public static void centerForm(Jcomponent form) {
      Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();
      form.setSize(screenSize.width * 1/2,screenSize.height * 1/2);
      Dimension frameSize = form.getSize();
      form.setLocation((screenSize.width - frameSize.width) / 2,
         (screenSize.height - frameSize.height) / 2);
    }
}
 
da utililizzare in modo statico, ad esempio:
     public MENU() {
        initComponents();
        setTitle("MENU PRINCIPALE");
        Utils.centerForm(this);
     }
 

 della piattaforma non sarebbe male.
....
 
Grazie per la chiarezza e per l'aiuto.
E' bello incontrare persone disposte a dare una mano anche a chi muove i 
primi passi.


  JComponent
 
la devo importare da dove?


 
 
import javax.swing.JComponent
 
 

 import javax.swing.JComponent
 
Premetto che sto utilizzando...emm, provando ad utilizzare, Netbeans.
 
Seguendo il consiglio del Dr.Ugo dentro al package di default ho creato 
una Javaclass di nome Utility.java dentro alla quale ho messo:
 
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JComponent;
 
public final class Utility {
    public static void centerForm  (Jcomponent form) {
....
 
Ma JComponent in void centerForm; mi viene sottolineato come errore...


 
 
Controlla che le maiuscole siano rispettate nelle varie dichiarazioni...
 
 

 Controlla che le maiuscole siano rispettate nelle varie dichiarazioni...
 
Qui c'è tutto:
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JComponent;
 
 
 
 
public final class Utility {
 
    public static void centerForm  (Jcomponent form) {
      Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();
      form.setSize(screenSize.width * 1/2,screenSize.height * 1/2);
      Dimension frameSize = form.getSize();
      form.setLocation((screenSize.width - frameSize.width) / 2,
         (screenSize.height - frameSize.height) / 2);
    }
}
 
Naturalmente anche i metodi di form, vengono contrassegnati con corsivo.



Jcomponent è sbagliato, usa JComponent. Non uso netbeans, uso eclipse, 
nell'editor java, posizionando il cursore sulla parola sbagliata ti 
propone delle alternative. Ad esempio potrebbe proporti di scegliere il 
nome corretto oppure di importare una classe. Ovviamente occorre 
prestare attenzione, potrebbero esserci piu' classi con lo stesso nome, 
ma di package diversi, si tratta di scegliere quello giusto. Capisco che 
pretenderlo da un neofita possa essere eccessivo, ma vedrai che con un 
po' di allenamento...
 

Il 10/03/15 13:17, Dr.UgoGagliardelli ha scritto:
 
Si era quello. Ciò mi insegna ad essere più disciplinato nella scrittura.
Si fatica, ma non mi scoraggio, ora c'è il this che non va bene:
 
l'errore dice incompatible types MENU cannot be converted to JComponent
E' forse perchè son partito con
public class MENU extends javax.swing.JFrame ?


Una sola riga risolve tutto:
 
setLocationRelativeTo(null);
