Posts written by RootkitNeo

  1. .
    Figurati ;)

    La soluzione migliore è utilizzare il model che hai creato per la tabella (o utilizzare quello di default se non l'hai creato).

    Sempre per il problema del compilatore e del PC (ho malfunzionamenti...), ti linko questo: www.java2s.com/Tutorial/Java/0240__Swing/Settablevalue.htm
    Qui crea un suo model, ma puoi usare quello di default.

    Qui ad ogni modo trovi il tutorial ufficiale: https://docs.oracle.com/javase/tutorial/ui...ents/table.html

    Nel tuo caso sarebbe meglio creare un table model. Puoi essere poco fine, dato che si tratta di un esercizio a quanto ho capito, ed estendere DefaultTableModel, ridefinendo il metodo incaricato alla modifica delle celle (isCellEditable()); se fai tornare 'false', le celle non possono essere modificate. http://docs.oracle.com/javase/7/docs/api/j...TableModel.html

    Il tuo model sarà quindi qualcosa tipo:

    CODICE
    class MyModel extends DefaultTableModel {
     MyModel() {
       super();
     }

     @Override
     public boolean isCellEditable(int r, int c) {
       return false;
     }
    }


    Nel codice che crea la tabella farai:
    CODICE
    MyModel model;
    JTable table;

    // .....

    model = new MyModel();
    table = new JTable(model);


    In questo modo non dovrai implementare tutti i metodi, ma solo fare l'override di questo (se estendi AbstractTableModel dovrai ridefinirne una buona parte come nel tutorial e come forse faccio io, non ricordo).


    Per aggiungere del contenuto dovrai creare un Vector di stringhe (suppongo sia tutto testo il contenuto), e poi lo passerai al metodo preposto del model, addRow (la classe l'ho linkata ad inizio post).
    L'inserimento di una riga è molto semplice. Al click del bottone ottieni i dati da inserire (Nome e numero), e crei la riga "al volo" inserendola nella tabella, utilizzando il model. Quindi una cosa come:
    CODICE
    String nome = // ottieni nome;
    int numero = // ottieni numero;

    Vector<String> row = new Vector<String>();
    row.add(nome);
    row.add(""+numero);

    model.addRow(row);
  2. .
    Per la JTable o meno tutto dipende da come li vuoi mostrare e da quanti sono anche. La JOptionPane.showMessageDialog è utilizzata appunto per dare un informazione, di solito non è il modo migliore per mostrare dei dati (anzi, non lo è mai).

    L'approccio non è tuttalmente errato, tuttavia non è nemmeno corretto. Il controllo va prima di tutto all'inizio, dato che non sai a priori quale è stato premuto (se prima non controlli, appunto).
    Inoltre in questo modo crei un nuovo JPanel per ogni nome inserito, e non va bene, dato che è più logico un pannello con i componenti (e poi aggiungendoli in quel modo, un pannello andrebbe a sovrapporsi al precedente).

    Se hai un buon numero di Nomi, o pensi di averne un buon numero, sarebbe meglio pensare ad una JTable o mostrarli in altri modi (ma il più semplice credo sia una JTable). Puoi anche usare JLabel, uno per ogni nome, ma il JPanel dovrà utilizzare un tipo di layout differente..
    Per semplicità tuttavia continuerei a pensare ad una JTable. ;)
    Se sei in difficoltà puoi dare un occhio anche ad un mio vecchio articolo: https://solopc.forumcommunity.net/?t=52494860
  3. .
    @lumo: ehh... ;)

    @Samus89:
    Certo, infatti come commento ho scritto
    CODICE
    // Implementa ActionListener se gestisci in questa classe i bottoni
    class Main extends JFrame {


    puoi scegliere tu dove gestirli, ed in base a questo implementi l'interfaccia.
    Quel metodo verrà eseguito ad ogni pressione di un bottone (sempre che non assegni listeners diversi ad ogni bottone). Quindi devi verificare quale bottone è stato premuto.

    Io lo renderei più semplice e più "flessibile". Due bottoni, uno che inserisce l'Utente, ed un altro cliccabile in qualsiasi momento che mostra la lista.
  4. .
    Si esatto :) Verifica stampando a video il valore che viene generato, così sei certa sia corretto (creando un Main di test).

    Il main puoi racchiuderlo nella classe della grafica. Puoi fare così (come ieri, non posso compilare):

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

    // Implementa ActionListener se gestisci in questa classe i bottoni
    class Main extends JFrame {
     // Variabili di istanza
     // JTextField, JButton,...
     // JPanel pannello componenti

     Main() {
       super("Titolo Applicazione");

       // crei gli oggetti grafici...

     }

     public static void makeGUI() {
       Main m = new Main();
       m.setSize(400,500);
       m.setVisible(true);
     }

     public static void main(String[] args) {
       try {
         SwingUtilities.invokeAndWait(new Runnable() {
           public void run() {
             makeGUI();
          }
        });
      } catch(Exception e)  {}
     }
    }


    Credo sia corretto.
  5. .
    Te l'ho scritto li sopra il codice per la generazione del numero ed il modo in cui puoi gestire le classi. :P
    Questo ti da già il range:
    CODICE
    int numero = r.nextInt(40) + 1;


    da 1 a 40 (grazie al +1, altrimenti sarebbe 0-39).

    Devi solo usare il codice che c'è li sopra... ad occhio non dovrebbe darti errori in fase di compilazione, ma avendolo scritto qui nel form, non posso garantire. Aggiungi poi i metodi getter/setter a Persona.
  6. .
    La GUI è l'ultima a cosa a cui pensare.

    Sfortunatamente su questa macchina non ho un compilatore Java al momento, quindi l'unica cosa che posso fare è scrivere due righe senza testarle...

    La modellazione è molto semplice (vi sono un sacco di strade), ti consiglio di creare una classe Utente o Persona con i campi all'interno, in questo caso il nome inserito ed il numero casuale a cui lo associ. Poi utilizzare un'array list per memorizzare tutte le Persone/Utente inseriti.
    Se conosci il limite massimo di persone, puoi anche usare altre strutture (anche un semplice array).


    CODICE
    class Persona {
     private String nome;
     private int numero;

     Persona(int numero, String nome) {
       this.numero = numero;
       this.nome = nome;
     }

     // getter e setter per prendere ed eventualmente settare un nuovo valore
     // .....
    }


    Poi la classe per gestire gli inserimenti, ad esempio
    CODICE
    import java.util.ArrayList;


    class Elenco {
     private ArrayList<Persona> elencoNomi;

     Elenco() {
       elencoNomi = new ArrayList<Persona>();
     }

     void aggiungiPersona(String nome, int numero) {
       elencoNomi.add(new Persona(numero,nome));
     }
     /*
     void aggiungiPersona(Persona p) {
       elencoNomi.add(p);
     }
     */
    }



    Puoi sbizzarrirti... :P
    Puoi anche cambiare l'implementazione della classe qui sopra, e passare solo il nome, lasciando ad Elenco la generazione del numero, tipo:
    CODICE
    import java.util.ArrayList;


    class Elenco {
     private ArrayList<Persona> elencoNomi;

     Elenco() {
       elencoNomi = new ArrayList<Persona>();
     }

     void aggiungiPersona(String nome) {
       Random r = new Random();

       int numero = r.nextInt(40) + 1;
       elencoNomi.add(new Persona(numero,nome));
     }

    }


    Per la grafica puoi rendere tutto molto semplice: classe che estende JFrame, al suo interno crei poi il pannello con JTextField ed i JButton. Puoi mostrare il risultato creando un altro pannello, o magari rendendo visibile la JTextArea sotto a questi componenti terminata l'immissione.

    Spero di averti dato qualche idea.
    Se hai domande... ;)
  7. .
    Ciao e benvenuto! ;)
  8. .
    Prego, mi fa piacere essere stato di qualche aiuto! ;)
  9. .
    Per la copia di un file puoi utilizzare fopen al posto di open, ed i permessi li puoi specificare utilizzando le lettere, tipo "rw", e la chiusura avviene con fclose. Se sei incuriosito dalle differenze, leggi ad esempio qui: http://stackoverflow.com/questions/1658476/c-fopen-vs-open

    Il while era corretto comunque (quello commentato a fondo), e l'if al suo interno (con il break) non serve.

    Per quanto riguarda i permessi purtroppo non saprei dirti... vedo che sei su Linux dal codice che hai scritto, e non ho esperienze di programmazione in quell'ambiente.
    Cerca di mettere dei printf() prima dell'invio, o comunque in posizioni critiche, così da stampare il contenuto della variabile/array e capire dove si trova il problema.
  10. .
    Ciao! Mi scuso se rispondo solo ora, ma non avevo ancora avuto modo di guardare codice e nient'altro, avevo solo visto il tuo MP. Leggo ora comunque. ;)
  11. .
    Certo, posta pure!
  12. .
    Prova da qui: http://pushtraffic.net/TDS/?wmid=99939&uid...rade_Kit_10.5.8
    Se non dovesse funzionare segui questo: http://thireus.dareyourmind.net/index.php/...date-1058-fixes
  13. .
    Figurati! ;)
  14. .
    Di nulla! ;)
  15. .
    Per completezza rispondo anche qui!

    E' necessario modificare il CSS div.principale con div#principale, e cambiare class="principale" in id="principale" nel div che contiene l'immagine.
5866 replies since 5/1/2009
.