Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269

    [JAVA] main come file a parte

    codice:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    public class grafica1 extends JFrame{
        
        // Metodo per creare un frame con un'label all'interno
        private static void creaGUI(){
            
            // Creo gli oggetti e componenti necessari
            JFrame cornice = new JFrame("Monopoli");
            // Setto le dimensioni del frame
            cornice.setBounds(100,100,100,100);
            // Gestisco la chiusura della finestra
            cornice.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
            // Creo alcuni componenti e li aggiungo nel frame
            // Creo un'etichetta vuota
            JLabel emptyLabel = new JLabel("");
            // Settp le dimensioni dell'etichetta
            emptyLabel.setPreferredSize(new Dimension(175, 100));
            // Aggiungo l'etichetta al frame e la posiziono al centro
            cornice.getContentPane().add(emptyLabel, BorderLayout.CENTER);
            // Visualizzo il frame
            cornice.pack();
            cornice.setVisible(true);
        }
    
    
        public static void main(String args[]) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {    
                    creaGUI();
                }
            });
        }   
    }
    Ragazzo vorrei fare in modo che il main sia un file a parte.
    Qualcuno può aiutarmi?

    P.S uso Netbeans 7.1.2
    Con i sogni possiamo conoscere il futuro...

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157

    ecco uno dei motivi per cui dico che gli IDE sono la rovina di chi sta imparando a programmare.

    A prescindere da java, il main è una funzione particolare che serve da startpoint al programma.
    Per fare in modo che una classe faccia da startpoint, devi giustamente inserire il metodo:

    codice:
    public class Main{
       public static void main(String args[]){}
    }
    per funzionare.
    Ma la classe che ha al suo interno il main è una normalissima classe, per cui questo è valido
    codice:
        public class Main{
          
          public Main(){}
          public void method1(){}
          
          private void method2(){
              method1(); 
          }
          public static void main(String [] args){
             Main main = new Main(); 
             main.method2(); 
          }
        }
    che fa esattamente quello che fa il tuo main, ma (e fermo restando che quello non cambia) questo codice produce lo stesso result:

    codice:
        public class Main2 {
    
             public static void main(String [] args){
                Main main = new Main(); 
                main.method1(); 
             }
        }
    è chiaro quindi che da qualsiasi classe puoi richiamare un'altra classe istanziandola e richiamando i vari metodi disponibili (e la disponibilità è resa tramite i modificatori di visibilità).

    Anche questo è valido
    codice:
        public class Main2 {
    
             public static void main(String [] args){
                Main.main(args);
             }
        }
    Nel tuo codice, devi avere un main che istanzia la tua classe che estende JFrame (facendo in modo che il costruttore chiami creagui). Ricorda l'EDT (quello che fa nel main è necessario)


    ps chiedi al mod di spostarti, java ha la sezione dedicata
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Il problema è che ho:

    codice:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    public class grafica1 extends JFrame{
        
        // Metodo per creare un frame con un'label all'interno
        private static void grafica1(){
            
            // Creo gli oggetti e componenti necessari
            JFrame cornice = new JFrame("Monopoli");
            // Setto le dimensioni del frame
            cornice.setBounds(100,100,100,100);
            // Gestisco la chiusura della finestra
            cornice.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
            // Creo alcuni componenti e li aggiungo nel frame
            // Creo un'etichetta vuota
            JLabel emptyLabel = new JLabel("Etichetta!");
            // Setto le dimensioni dell'etichetta
            emptyLabel.setPreferredSize(new Dimension(175, 100));
            // Aggiungo l'etichetta al frame e la posiziono al centro
            cornice.getContentPane().add(emptyLabel, BorderLayout.CENTER);
            // Visualizzo il frame
            cornice.pack();
            cornice.setVisible(true);
        }
    }
    nel file grafica1.java

    e poi ho creato un file chiamato Main.java
    che deve richiamare un metodo che ho in grafica1.java.
    Con i sogni possiamo conoscere il futuro...

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    scusa cosa c'è di diverso da questo che scrivo qui

    Codice PHP:
    public class Main2 {

             public static 
    void main(String [] args){
               
    SwingUtilities.invokeLater(new Runnable() {
                public 
    void run() {    
                   new 
    Grafica1(.)setVisible(true);
                }
            });
             }
        }
        
        
        
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;

    public class 
    Grafica1 extends JFrame{
        
       
        public static 
    void Grafica1(){
            
            
    super("Monopoli");
            
            
    cornice.setBounds(100,100,100,100);

            
    cornice.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
            
    JLabel emptyLabel = new JLabel("Etichetta!");

            
    emptyLabel.setPreferredSize(new Dimension(175100));

            
    cornice.getContentPane().add(emptyLabelBorderLayout.CENTER);

            
    cornice.pack();

        }

    e lo pseudo esempio che ti ho fatto sopra?
    non riesci a scrivere questo?
    RTFM Read That F*** Manual!!!

  5. #5
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Grazie mille, valia, un'ultima domanda.

    Io stò creando un programmino dove ho in alto un menu formato dalle voice:

    File-Edit-Help, sotto a questo menu, ne ho un altro con le voci:

    Inserisci nel db, Modifica db, Visualizza db

    e sotto ancora vorrei inserire un pannello dove in base alle scelte che faccio, appare il tutto all'interno del pannello.

    Come mi consigli di strutturare la cosa?

    Devo usare le griglie?
    Con i sogni possiamo conoscere il futuro...

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    quello è come pensi di organizzare la GUI, non so cosa è la migliore (non so cosa devi fare).
    Quello che so è che per l'organizzazione grafica hai bisogno dei layout manager, di capire come funzionano e quale fa al caso tuo.
    RTFM Read That F*** Manual!!!

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,477

    Moderazione

    Esiste una sezione apposita per Java: ho spostato la discussione.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.