Collection di JTextField

di il
17 risposte

Collection di JTextField

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

  • Re: Collection di JTextField

    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.
  • Re: Collection di JTextField

    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.
  • Re: Collection di JTextField

    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);
                }
            });
        }
    }
  • Re: Collection di JTextField

    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.
  • Re: Collection di JTextField

    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
  • Re: Collection di JTextField

    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
  • Re: Collection di JTextField

    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 ...
  • Re: Collection di JTextField

    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?
  • Re: Collection di JTextField

    TheRT0C ha scritto:


    Tenendo conto che ho 622mln di elementi, come posso inserirli in un arrayList?
    Per cosa? Per fare che?
  • Re: Collection di JTextField

    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.
  • Re: Collection di JTextField

    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??
  • Re: Collection di JTextField

    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]
  • Re: Collection di JTextField

    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?
  • Re: Collection di JTextField

    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