Posts written by RootkitNeo

  1. .
    Ciao e benvenuta! ;)

    Il forum non è più attivo da anni ormai... io passo per rispondere ad MP. Se vedo nuovi post solitamente rispondo.
  2. .
    Ti serve una libro. Serve teoria e molta pratica. Uno vale quasi l'altro, e tra Java e C# le differenze non risultano così numerose...
  3. .
    Ciao!
    Scegline uno ed inizia a studiare, meglio se cerchi un testo cartaceo; non saprei però consigliartene uno, non sono molto aggiornato su nuovi autori.
    L'importante è entrare nella logica, nella mentalità.
  4. .
    CITAZIONE (~Cedric @ 25/11/2016, 21:56) 
    Ciao, per prima cosa, ti consiglio di utilizzare un ciclo di tipo WHILE anziché FOR, poiché quest'ultimo viene utilizzato solo per cicli di cui si conosce il numero esatto di iterazioni.

    In realtà non cambia nulla, che sia for o while.
  5. .
    Ciao e benvenuto! :)
    Come annunciato il forum ha chiuso. Trovi tutti i dettagli in bacheca, e che dire... mi auguro di vederti su Syra Community!
    A presto, ciao.
  6. .
    Ciao!
    Di che gioco si tratta?
    Di solito vengono considerati dei cheat... quindi finiresti per farti bannare dal game, probabilmente.
  7. .
    Ciao, apri una nuova discussione nella sezione corretta, qui è off-topic.
    Grazie, ciao! ;)

    Comunque prego Federico!
  8. .
    Ciao, il comando cat è utilizzato per concatenare il contenuto di file (quindi per unire più file) oppure per stamparne il contenuto. Quello che vedi tu è il contenuto del file SerieTV.odt.
    Il file odt non è testo semplice (txt), ma ha una propria codifica. Se lo fai su un file exe di Windows ad esempio otterrai un output analogo (con caratteri non comprensibili).

    Il formato odt è più complesso del testo semplice. Prova ne è che se rinomini il file odt in "zip" e poi lo estrai, ne vedrai il contenuto. Avrai alcune cartelle oltre che a qualche file xml (compreso quello che contiene la formattazione del testo). ;)
  9. .
    Ciao, ho visto ora il topic... probabilmente arrivo troppo tardi.

    Ricordati comunque che con JS l'operatore '+', se applicato alle stringhe, le concatena. Quindi il numero deve prima essere convertito in intero, e poi sommato.

    PS: ricordati di utilizzare il tag CODE quando posti del codice. ;)
  10. .
    Ciao Elisa, e benvenuta! ;)

    Scusa il ritardo nella risposta.
    Se si tratta di problemi software, puoi chiedere in Assistenza Software.
  11. .
    Non conosco quell'estensione. Hai provato con Download Master?
    Per la verità io utilizzo Firefox, ed uso Flashgot per i video in flash. Mi ha sempre scaricato tutto senza problemi!
  12. .
    Dal sito internet ufficiale: http://www.coreldraw.com/it/product/softwa...azione-grafica/
    Se invece sei in cerca di crack o keygen, noi non ne forniamo. Google ne è già pieno... ;)
  13. .
    Ciao e benvenuto! ;)
  14. .
    Ok, avevo un attimo di tempo ed ho acceso l'altro vecchio PC. Ho scritto due righe di codice implementando il tutto.
    E' solo una possibile implementazione, puoi progettarlo anche diversamente.

    Utente.java
    CODICE
    class Utente {
     private String nome;
     private int numero;
     
     Utente(String nome, int numero) {
       this.nome = nome;
       this.numero = numero;
     }
     
     String getNome() {
       return nome;
     }
     int getNumero() {
       return numero;
     }
    }



    GestioneNomi.java
    CODICE
    import java.util.*;

    class GestioneNomi {
     // Memorizzo l'elenco per modellare internamente
     private ArrayList<Utente> elencoUtenti;
     private Random random;
     private final int MAX = 40;
     
     
     GestioneNomi() {
       elencoUtenti = new ArrayList<Utente>();
       random = new Random();
     }
     
     // Restituisce l'ID dell'utente aggiunto
     int aggiungiUtente(String nome) {
       int id = generaNumero();
       elencoUtenti.add(new Utente(nome,id));
       return id;
     }
     
     private int generaNumero() {
       return random.nextInt(MAX) + 1;
     }
    }


    Non penso ci sia nulla da dire su questa classe. Modella semplicemente i dati del software usando un ArrayList.


    Questa classe invece implementa ActionListener e riceve gli eventi. Il suo compito è comunicare con il Model (GestioneNomi in questo caso) e con la grafica (GUI). In pratica non fa altro che ricevere un evento da parte dell'utente (pressione del pulsante), elaborarlo (passandolo al Model) ed ottenendo un risultato. Il risultato lo manda di nuovo alla grafica, così da aggiornare la GUI (inserisce nome e numero nella tabella).

    Controller.java
    CODICE
    import java.awt.*;
    import java.awt.event.*;

    class Controller implements ActionListener {
     private GestioneNomi gn;
     private GUI gui;
     
     Controller(GestioneNomi gn, GUI gui) {
       this.gn = gn;
       this.gui = gui;
       
       gui.init();
       gui.makeComponent();
       gui.aggiungiAscoltatori(this);
     }
     
     public void actionPerformed(ActionEvent ae) {
       // Inutile controllare con un if quale pulsante
       // e' premuto, dato che l'unico registrato e'
       // il bottone di inserimento
       
       String n = gui.getNome();
       int id = gn.aggiungiUtente(n);
       gui.aggiornaTabella(n,id);
       
       // Cancello il campo di testo (e' piu' bello vederlo vuoto :P )
       gui.pulisciCampo();
     }
    }



    GUI.java
    CODICE
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;

    import java.util.Vector;

    class GUI {
     // Variabili di istanza
     // ----------------------------------
     private JFrame frame;
     private JTextField nome;
     private JButton aggiungi;
     private MyTableModel tableModel;
     private JTable table;
     // ----------------------------------
     
     // Costruttore
     GUI() {

     }
     // Fine costruttore
     
     
     // Ascoltatore del bottone
     // ------------------------------------------------
     void aggiungiAscoltatori(ActionListener al) {
       aggiungi.addActionListener(al);
     }
     // ------------------------------------------------
     
     //  Creo pannelli e componenti
     // ------------------------------------------------
     void makeComponent() {
       JPanel container = new JPanel(new GridLayout(2,1));
       
       JPanel comandi = new JPanel();
       JLabel text = new JLabel("Nome:");
       nome = new JTextField(10);
       aggiungi = new JButton("Aggiungi");
       
       comandi.add(text);
       comandi.add(nome);
       comandi.add(aggiungi);
       
       JPanel tabella = new JPanel(new BorderLayout());
       tableModel = new MyTableModel();
       table = new JTable(tableModel);
       table.getTableHeader().setOpaque(false);
       table.getTableHeader().setBackground(Color.WHITE);
       
       JScrollPane scrollTable = new JScrollPane(table);
       tabella.add(scrollTable);
       tableModel.addColumn("ID");
       tableModel.addColumn("Nome");
       
       
       container.add(comandi);
       container.add(tabella);
       
       
       frame.getContentPane().add(container,BorderLayout.CENTER);
       frame.setSize(400,400);
       frame.setVisible(true);
     }
     // ---------------------------------------------------
     
     
     String getNome() {
       return nome.getText();
     }
     
     // Aggiorna la grafica aggiungendo riga e contenuto
     void aggiornaTabella(String s, int n) {
       Vector<String> row = new Vector<String>();
       row.add(""+n);
       row.add(s);
       tableModel.addRow(row);
     }
     
     void pulisciCampo() {
       nome.setText("");
     }
     
     
     private void makeGUI() {
       frame = new JFrame("Esempio");
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     }
     
     // Avvio la grafica usando un nuovo thread
     // Nel tutorial della Oracle se non erro c'è tutta la spiegazione
     void init() {
       try {
         SwingUtilities.invokeAndWait(new Runnable() {
           public void run() {
             makeGUI();
           }
         });
       } catch(Exception e) {}
     }
     
     
     // Table Model personalizzato
     private class MyTableModel extends DefaultTableModel {
       MyTableModel() {
         super();
       }

       @Override
       public boolean isCellEditable(int row, int col) {
         return false;
       }
     }
     
    }


    Implementa semplicemente la grafica. Utilizzo un JPanel come contenitore di altri due JPanel. Questo primo contenitore usa una griglia di 2x1 (2 righe ed 1 colonna). Nella prima riga memorizza un JPanel con label, campo di testo e bottone; nella seconda riga invece la tabella. Il panel della prima riga usa il layout di default (FlowLayout) mentre la seconda riga usa Borderlayout per occupare tutto lo spazio con la tabella.


    Main.java
    CODICE
    class Main {
     public static void main(String[] args) {
       GestioneNomi gn = new GestioneNomi();
       GUI gui = new GUI();
       
       Controller c = new Controller(gn,gui);
     }
    }



    Avvia l'applicazione. Passa al controller il model e la grafica; in questo modo si fa carico della loro gestione (fa da tramite).
  15. .
    Voglio precisare che come progettazione, in teoria, non sarebbe del tutto corretta. Sarebbe bene separare la logica dalla grafica. Ma dato che questo è una sorta di esercizio...

    Se i dati li vuoi mostrare tutti in una volta sola puoi risparmiarti anche il model. Io pensavo volessi aggiungere i dati uno alla volta, così da mostrarli direttamente nella tabella.
    Se vuoi fare tutto alla fine, puoi passare a JTable una matrice ed un vettore (oppure un vector di vector ed un vector), guarda i costruttori che mette a disposizione: http://docs.oracle.com/javase/7/docs/api/j...ing/JTable.html

    Il metodo che popola la tabella restituisce un tipo di dato differente da quanto dichiarato. Tu fai restituire una JTable, ma in realtà restituisci un boolean. Inoltre non avrebbe senso dato che in ogni caso restituirebbe true. Quindi puoi lasciarli tranquillamente void.

    La variabile "riga" non serve se la usi in quel modo, puoi usare valori immediati come per le colonne.

    Tuttavia appunto, se vuoi aggiungere tutto assieme, allora dovrai memorizzare tutti gli Utenti inseriti e poi creare una matrice con i numeri generati ed i nomi degli utenti da passare insieme ai nomi delle colonne nella JTable.

    Se il metodo che popola la tabella viene chiamato più volte accade un macello ora come ora. lol Inoltre non aggiungi nemmeno la JTable al frame (o meglio, prima ancora al pannello).

    Se domani riesco ad usare l'altra macchina ti scrivo due righe, salvo imprevisti di qualsiasi tipo.
5866 replies since 5/1/2009
.