Collection di JTextField

di TheRT0C il
17 risposte
Sto usando swing e awt per un generatore di numeri casuali(si stupidamente tipo superenalotto ).

Ma come mai nel costruttore richiamo un metodo che mi setta tramite for each una collezione di JTextField, poi JFrame non me li visualizza? Esempio veloce:

public class Finestra{
         static List<JTextField> numbers=new ArrayList<>(6);
         JFrame f;
         Finestra(){
             f=new Frame();
             inizializeTextFieldAndInsertToFrame();
             f.setSize(500,300);
             f.setLayout(null);
             f.setVisibile(true);
          }
          
          inizializeTextFieldAndInsertToFrame(){
                  int x=20;
                  for(JTextField number:numbers){
                       number=new JTextField();
                       number.setBounds(x,50,40,20);
                       x=x+50;
                       f.add(number);
                   }
            }
}


p.s. nella classe Main creo l'istanza di Finestra nel metodo main.

p.s.2: quanto è importante pubblicare su github, fa piacere alle aziende in sede di colloquio?

17 Risposte

  • TheRT0C ha scritto:


    Ma come mai nel costruttore richiamo un metodo che mi setta tramite for each una collezione di JTextField, poi JFrame non me li visualizza?
    Perché la lista è "vuota" .... non ci hai aggiunto nulla!
    (il 6 è solo la "capacità" fisica iniziale, NON il numero logico di elementi davvero presenti)

    TheRT0C ha scritto:


    p.s.2: quanto è importante pubblicare su github, fa piacere alle aziende in sede di colloquio?
    Per quanto posso dire io ... generalmente interessa poco/nulla.
  • andbin ha scritto:


    TheRT0C ha scritto:


    Ma come mai nel costruttore richiamo un metodo che mi setta tramite for each una collezione di JTextField, poi JFrame non me li visualizza?
    Perché la lista è "vuota" .... non ci hai aggiunto nulla!
    (il 6 è solo la "capacità" fisica iniziale, NON il numero logico di elementi davvero presenti)

    TheRT0C ha scritto:


    p.s.2: quanto è importante pubblicare su github, fa piacere alle aziende in sede di colloquio?
    Per quanto posso dire io ... generalmente interessa poco/nulla.
    Questa è una figura di m****. Aggiungerei ma quale Github, l'azienda dopo questa al massimo mi assumerebbe per fare da porta oggetti. Come si cancellano i thread sul forum? Potrei dire, gli effetti del senza caffè, ma non ci sono scuse. Scusami per il thread inutile. Mi sento come quei poveri vecchietti che mollano 50euro al tecnico solo per un cavo staccato.
  • Una "mini" estrazione del Superenalotto si può fare con abbastanza "poco":
    import java.awt.Color;
    import java.awt.FlowLayout;
    import java.util.Collections;
    import java.util.List;
    import java.util.stream.Collectors;
    import java.util.stream.IntStream;
    import javax.swing.JFrame;
    import javax.swing.JTextField;
    import javax.swing.SwingConstants;
    import javax.swing.SwingUtilities;
    
    public class FrameSuperenalotto extends JFrame {
        public FrameSuperenalotto() {
            super("Superenalotto");
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            setSize(300, 200);
            setLayout(new FlowLayout());
            setLocationRelativeTo(null);
    
            List<Integer> numeri = IntStream.rangeClosed(1, 90).boxed().collect(Collectors.toList());
            Collections.shuffle(numeri);
    
            for (int i = 0; i < 6; i++) {
                JTextField tf = new JTextField(numeri.remove(0).toString(), 2);
                tf.setEditable(false);
                tf.setHorizontalAlignment(SwingConstants.CENTER);
                tf.setBackground(Color.WHITE);
                add(tf);
            }
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new FrameSuperenalotto().setVisible(true);
                }
            });
        }
    }
  • Si chiaramente avrei potuto estendere JFrame. Grazie dell'implementazione andbin. Sto vedendo un pò le interfacce grafiche di java, in quanto all'uni le ho viste mezza volta in un progetto di gruppo per DB.
    Uso Intellij Community e venendo da Android Studio, non posso non fare una considerazione. Se in AS c'è un layout editor, Swing ha una suite del genere? come notavo ad esempio in JavaFX con SceneBuilder.
  • TheRT0C ha scritto:


    Uso Intellij Community e venendo da Android Studio, non posso non fare una considerazione. Se in AS c'è un layout editor, Swing ha una suite del genere? come notavo ad esempio in JavaFX con SceneBuilder.
    Sì IJ IDEA ha l'editor di GUI per Swing: https://www.jetbrains.com/help/idea/designing-gui-major-steps.html

    Ma se impari ad usare Swing scrivendo il codice "a mano" (che non è poi così difficile) sarebbe tanto meglio. L'ho detto molte volte, es. qui
  • Seguirò il tuo consiglio, sicuramente è da studiare per bene la documentazione di oracle, che un pò spaventa per quanto grossa e per quanto tende sempre ad aggiornarsi. Vedevo le nuove feature di Java 14 con i vantaggi che portano ad esempio i Records. Inaomma qui c'è solo da studiare e da capire che strada prendere. Grazie andbin
  • TheRT0C ha scritto:


    Vedevo le nuove feature di Java 14 con i vantaggi che portano ad esempio i Records.
    I Records sono una cosa nuovissima, tra l'altro sono ancora una preview feature, non ancora confermata/definitiva. Per chi inizia in Java tutte queste nuove feature si possono tranquillamente ignorare ... anche perché prima di arrivare ai Records serve studiare almeno "mille" altre cose prima ...
  • Non volevo scrivere un nuovo thread, visto che comunque ho ripreso ieri notte questo project per definire le possibili combinazioni. Tenendo conto che ho 622mln di elementi, come posso inserirli in un arrayList? come posso calcolare partendo da n elementi quanta memoria avrò bisogno per allocare? per l'aumento dell'heap space su intellij devo seguire questo path File/Settings/Build,Execution, Deployment/Compiler/Build Process Heap Size(mb)?
    Portando tale campo ad esempio a 2Gb prenderà spazio dalla Ram, giusto? Se volessi invece non usare tale memoria per dati cosi grandi, visto che il pc ha al massimo 4 gb di ram, dovrei scrivere tali dati su un documento.txt?
  • TheRT0C ha scritto:


    Tenendo conto che ho 622mln di elementi, come posso inserirli in un arrayList?
    Per cosa? Per fare che?
  • Ho una classe Scheda che rappresenta un ArrayList di 6 numeri. Ogni istanza corrisponde ad una delle 622mln di combinazioni senza ripetizione di 90 numeri raggruppati a 6.
    ArrayList di tipo Scheda può contenere tutte queste combinazioni? se si come calcolo lo spazio necessario.
  • TheRT0C ha scritto:


    Ho una classe Scheda che rappresenta un ArrayList di 6 numeri. Ogni istanza corrisponde ad una delle 622mln di combinazioni senza ripetizione di 90 numeri raggruppati a 6.
    ArrayList di tipo Scheda può contenere tutte queste combinazioni? se si come calcolo lo spazio necessario.
    Ma la questione è: a cosa ti servirebbe tenere TUTTE le combinazioni in memoria??
  • Non sono 622milioni in realtà, molto di meno. Vado a spiegarmi meglio.
    "Prodotto Cartesiano" delle combinazioni semplici senza ripetizione: (10 3) e (80 3)
    Il senso? Escludere dalle 622 milioni le combinazioni di Schede che abbiano 3 numeri nell'intervallo for(i=1;i<81;i=i+10)

    Esempio: [1,2,3,11,22,40] quindi 1,2,3 nell'intervallo [1,10] e 11,22,40 in [11,90]
  • TheRT0C ha scritto:


    Il senso? Escludere dalle 622 milioni le combinazioni di Schede che abbiano 3 numeri nell'intervallo for(i=1;i<81;i=i+10)

    Esempio: [1,2,3,11,22,40] quindi 1,2,3 nell'intervallo [1,10] e 11,22,40 in [11,90]
    Continua a non essermi chiaro il perché .... vediamolo in modo differente: COSA fa la tua applicazione? Fa una singola estrazione? (come il mio mini-esempio) Fa più/molte estrazioni? È un "gioco" che va avanti per un po' dove ci sono utenti che hanno più "schede" in mano da riempire?
  • Ecco partiamo dal tuo miniesempio. Mi genera questa estrazione= 1,2,3,4,5,6. Ora sappiamo che tale estrazione ha la stessa probabilità di uscita di questa estrazione più "eterogenea" 30,45,14,67,89,4. Solo che a me la prima estrazione non piace e non voglio che venga generata. Anzi voglio di più non voglio che 3(o 4 o 5 o 6) numeri nei raggruppamenti di 6 non facciano parte della stessa decina. Quindi alla singola estrazione del tuo mini esempio faccio un contains sulle schede che non voglio e se è presente, rigenera una nuova sequenza, altrimenti la stampa.

    Ma tralasciando questo pallino notturno, sono più curioso nel capire quanto spazio occupa? quanto costa un'istanza di una classe con parametro ArrayList in termini di spazio? e quanto spazio occupa un ArrayList di 20mln di istanze.
Devi accedere o registrarti per scrivere nel forum
17 risposte