Visualizzazione dei risultati da 1 a 5 su 5

Hybrid View

  1. #1

    [Swing] Creare oggetti eredi a griglia

    Salve, sto creando un programma che risolve automaticamente dei cosidetti "KenKen" usando il backtracking, sto creando l'interfaccia grafica ed avrei qualche problema, in altre parole vorrei creare una griglia, in cui ogni oggetto eredita da ad esempio una JTextField( Ma e' un esempio fatto sul momento, se ritenete ci sia una via migliore indicatela senza problemi), che deve poter settare un testo piccolo in alto a sinistra o meno, ed il bordo piu' spesso in base ad uno stato (stavo pensando appunto di fare un qualcosa di similare al Design Pattern "state" per fare queste cose), cosa mi consigliate?Grazie anticipatamente

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Io l'ho provato a realizzare così, per curiosità.
    Ti espongo l'idea di base:

    1) La griglia è rappresentata da un pannello con GridLayout (così puoi decidere il numero di righe e colonne)
    2) Ciascuna cella è rappresentata da una classe che estende JPanel con un BorderLayout: al NORTH c'è una JLabel con allineamento a sinistra e font ridotto; al CENTER c'è una JTextField con un Document che limita l'inserimento ad un solo carattere e con font aumentato.
    3) La classe che modella la cella fornisce anche dei metodi per poter impostare il bordo su ciascun lato (vedi BorderFactory.createMatteBorder(int, int, int, int, Color)), più i metodi getter/setter per la Label e per il carattere della JTextField.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Io l'ho provato a realizzare così, per curiosità.
    Ti espongo l'idea di base:

    1) La griglia è rappresentata da un pannello con GridLayout (così puoi decidere il numero di righe e colonne)
    2) Ciascuna cella è rappresentata da una classe che estende JPanel con un BorderLayout: al NORTH c'è una JLabel con allineamento a sinistra e font ridotto; al CENTER c'è una JTextField con un Document che limita l'inserimento ad un solo carattere e con font aumentato.
    3) La classe che modella la cella fornisce anche dei metodi per poter impostare il bordo su ciascun lato (vedi BorderFactory.createMatteBorder(int, int, int, int, Color)), più i metodi getter/setter per la Label e per il carattere della JTextField.


    Ciao.
    Se non ti disturba, potresti postare una foto del risultato? Grazie

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ho preso come schema di esempio quello proposto da Wikipedia




    Qui un esempio parzialmente compilato




    Ciao.
    Ultima modifica di LeleFT; 06-07-2016 a 13:55
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Ho finito il mio progetto, ho usato una implementazione del backtracking che usa i thread, quindi piu' efficiente di cercare tutte le soluzioni, in cui per ogni blocco cerco tutte le soluzioni(in contemporanea con i thread), e poi un altro backtracking in cui anziche' provarle tutte, provo solo le soluzioni che risolvono i blocchi, questo mi permette inoltre di verificare i blocchi, dato che posso supporre siano corretti, provando solo quelli che li risolvono

    https://drive.google.com/open?id=0B9...y1CUUFpOERWRWs

    questo e' lo .jar eseguibile
    Ultima modifica di psp300xxx; 10-07-2016 a 16:51

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.