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

    Primo programma java

    Si vuole realizzare una semplice interfaccia grafica in Java basata su Swing in base alle attività descritte di seguito. L’applicazione dovrà contenere un unico metodo main che sarà utilizzato, in sede di valutazione, per avviare l’applicazione. Al fine di agevolare lo sviluppo dell’applicazione vengono fornite due classi di supporto che possono essere modificate in modo da rispondere alle specifiche richieste. In particolare la classe MainApplicazione, contenente il metodo main(..), si occupa di visualizzare una finestra vuota mentre la classe PannelloApplicazione rappresenta il pannello interno (Content Pane) della finestra, all’interno della quale vanno inseriti i componenti grafici ed il disegno geometrico. L’utilizzo di tali classi è opzionale. Realizzare, mediante l’utilizzo di Graphics e Graphics2D, una finestra JFrame di dimensioni 800 pixel per 800 pixel al cui interno vengono disegnate 10 ellissi di dimensione e posizione casuale. In particolare le ellissi dovranno avere diametri casuali tra 50 pixel e 200 pixel. Ogni figura e’ a contorno nero mentre lo sfondo è un colore casuale scelto tra tutti i colori RGB. Tutte le ellissi dovranno interamente apparire nell’area di visualizzazione. Ogni ridisegno del JFrame determina la visualizzazione di nuove ellissi random (le precedenti non vengono piu’ visualizzate). La finestra deve inoltre essere progettata in modo che premendo il pulsante di chiusura della stessa venga chiusa l’intera applicazione. Aggiungere nella parte alta della finestra i componenti di seguito riportati , disposti uno di seguito all’altro da sinistra a destra:  una etichetta con la scritta “numero di ellissi”  una casella di testo di dimensioni 25 pixel (altezza), 100 pixel (larghezza) contenente il valore 10  un pulsante alla finestra con l’etichetta “aggiorna” Per ognuno dei componenti grafici dovrà essere predisposto un opportuna variabile d’istanza che ne mantiene il riferimento.

    Nel file chiamato "MainApplicazione" ho scritto


    import javax.swing.*;

    /**
    * La classe permette di avviare l'applicazione, creando una finestra vuota.
    */
    public class MainApplicazione {

    //crea la finestra
    JFrame finestra = new JFrame();
    super("Prima Finestra");
    setLocation(100,100);
    setSize(800,800);

    //imposta il content pane della finestra
    finestra.setContentPane(new PannelloApplicazione());

    //visualizza la finestra
    finestra.setVisible(true);

    public static void main(String[] arg)
    {
    new JFrame();
    System.out.println();
    }
    }


    Nel secondo file chiamato "PannelloApplicazione" ho inserito

    import javax.swing.*;
    import java.awt.*;


    public class PannelloApplicazione extends JPanel {

    public PannelloApplicazione() {
    }

    protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    }
    }

    Che ne pensato ? Sono sicuro che qualcosa l'ho sbagliata; dove ?
    Come creo le 10 ellissi di dimensioni e posizione casuali ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Utilizzate i tag code per postare del codice!

    Per generare numeri casualmente puoi utilizzare java.util.Random

    L'applicazione dovresti lanciarla in un altro modo; ovvero avviando un thread

    codice:
      public static void makeGUI() {
        // Crei l'istanza del tuo frame
      }
      
      public static void main(String[] args) {
        try {
          SwingUtilities.invokeAndWait(new Runnable() {
            public void run() {
              makeGUI();
            }
          });
        } catch(Exception e) {}
      }
    Però se tutto questo è al di fuori da quanto devi svolgere, evita ovviamente.

    Il primo errore che vedo è l'utilizzo di JFrame. Per utilizzare JFrame si estende JFrame generalmente, e successivamente si aggiungono i componenti al suo interno.
    Infatti il tuo super() è sbagliato (come le chiamate agli altri 2 metodi), visto che la superclasse della tua classe è Object.
    Inoltre, non vedo come possa funzionare... la tua applicazione crea oggetti e setta tutto nel luogo ove vengono create le variabili di istanza.

    codice:
    import javax.swing.*;
    
    /**
    * La classe permette di avviare l'applicazione, creando una finestra vuota.
    */
    public class MainApplicazione extends JFrame {
      MainApplicazione() {
        super("Prima Finestra");
        setLocation(100,100);
        setSize(800,800);
    
        //imposta il content pane della finestra
        setContentPane(new PannelloApplicazione());
    
        //visualizza la finestra
        setVisible(true);
      }
    
      public static void main(String[] arg) {
        new JFrame();
      }
    }
    La parte del pannello al momento ci può stare.

    Dovresti studiare le basi di Java e della OOP prima.

  3. #3
    Ciao Patrick Jane. Grazie per il tuo reply. Ho un po' di domande perché sono nuovo di questo forum.

    Quale sono i tag per postare i codici ? Dove li prendo ? perché devo generare dei numeri con java until random ?

    In che senso lanciare ? Intendi postare il codice che ho scritto ? Non va bene questo thread ?

    Sto cercando di modificare il codice, appena ho fatto lo posto. Cosa vuol dire OOP?

    Conosci un sito (magari quelli del prof che mettono in upload i pdf delle lezioni) dove ci sono delle spiegazioni semplici che posso capire per poter iniziare ?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da Algalord
    Quale sono i tag per postare i codici ? Dove li prendo ? perché devo generare dei numeri con java until random ?
    Nella finestra di invio messaggio... guarda su wiki Qui Ovviamente guarda il tag CODE e fai riferimento a BBCode.

    java.util.Random non java.until.random
    Bhe scusa eh... come puoi generare dei numeri casuali se non utilizzi una classe per generare numeri casuali?


    In che senso lanciare ? Intendi postare il codice che ho scritto ? Non va bene questo thread ?
    ....
    Lanciare un applicazione è il modo in cui la avii. Questo thread non va bene, poichè rischi il congelamento dell'interfaccia ^^
    In pratica sei nel contesto dell'EDT (event dispatch thread), e questo svolge una sola operazione alla volta (l'interfaccia utente è single-thread); ciò significa appunto che la tua interfaccia resterà congelata, ecco perchè conviene creare un thread.


    Sto cercando di modificare il codice, appena ho fatto lo posto. Cosa vuol dire OOP?
    Spero tu stia scherzando... xD
    Non puoi programmare in Java se non sai nemmeno che esiste l'OOP.
    Comunque OOP significa Programmazione Orientata agli Oggetti. E' un concetto lungo da esprimere, quindi ti consiglierei di informarti in rete, o comunque tramite un libro su Java; affrontare una simile spiegazione in un topic è semi-impossibile.


    Conosci un sito (magari quelli del prof che mettono in upload i pdf delle lezioni) dove ci sono delle spiegazioni semplici che posso capire per poter iniziare ?
    Dipende a che lezioni ti riferisci, in linea di massima diciamo di no.
    Ti consiglio vivamente di studiare l'API di Java lasciando perdere le GUI per ora. Queste sono solamente l'ultima parte, tutto l'importante è quello che c'è dietro, come il package java.util di Java, la classe Random, il Collection Frameworks, le stringhe, gli array...
    E cosa fondamentale i concetti che stanno alla base della OOP: incapsulamento, ereditarietà, polimorfismo.


    PS: Ti mando un MP.

  5. #5
    Ciao si so che si parla di programmazione object oriented ma non stavo pensando all'abbreviazione:P

    si anche overide e overriding


    Dovrei iniziare cmq da programmini semplici per capire ic oncetti di costruttore, classi, variabili etc etc

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da Algalord
    Dovrei iniziare cmq da programmini semplici per capire ic oncetti di costruttore, classi, variabili etc etc
    Devi iniziare dalle basi di Java. Le variabili non sono un problema, riassumendo si può dire ci siano 8 tipi primitivi (chiamati anche tipi semplici) e sono: byte, short, int, long, float, double, boolean, char.
    Sono tutti signed, ad eccezione ovviamente di boolean e char.

    byte indica gli interi a 8bit
    short indica gli interi a 16bit
    int indica gli interi a 32bit
    long indica gli interi a 64bit

    float decimali con precisione singola, 32bit
    double decimali con precisione doppia, 64bit

    boolean indica i valori true o false (attenzione perchè i numeri 0 ed 1 non rappresentano true o false).

    char è un tipo di dato a 16bit per i caratteri

  7. #7
    import javax.swing.*;

    /**
    * La classe permette di avviare l'applicazione, creando una finestra vuota.
    */
    public class MainApplicazione extends JFrame {

    public MainApplicazione() {
    super("Prima Finestra");
    this.setLocation(100,100);
    this.setSize(200,200);

    //imposta il content pane della finestra
    this.setContentPane(new PannelloApplicazione());


    //visualizza la finestra
    this.setVisible(true);
    }

    public static void main(String[] arg)
    {
    MainApplicazione finestra = new MainApplicazione();

    }
    }

    Va bene così?

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Utilizzare i tag code!

    Ti ho mostrato sopra come dovresti lanciare l'applicazione; guarda il mio primo post.
    Il this è ridondante, puoi anche evitare di scriverlo visto che ti riferisci a quell'oggetto.
    Comunque per vedere se funziona puoi sempre compilare ed eseguire... dovrai importare anche awt ad esempio.

  9. #9
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Cioè, primo programma java e ti ritrovi a fare interfacce grafiche?
    E' come voler partecipare domani al roland garros avendo fatto oggi la prima lezione di tennis...

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.