DOMANDA [JAVA] Cambiare Font tramite JList

Pubblicità

Sergei

Utente Attivo
Messaggi
115
Reazioni
1
Punteggio
38
sì, va beh, lo so che sto rompendo, ma non sapevo a chi altri chiedere :sisi:

Ho girato il web in lungo e in largo senza trovare niente. Molto probabilmente perché non sapevo proprio cosa cercare :look:

Volevo fare una cosa semplicissima: una gui con 3 cose:
1) textare con una scritta tipo "Test font" (fantasia a mille, eh :asd:)
2) una JList con dentro i caratteri
3) pulsante cambia carattere.

Ora ho visto che per impostare un carattere alla textarea si usa (faccio un piccolo esempio):
Font font;
font = new Font ("Verdana", Font.BOLD, 12);
textArea.setFont(font);

Ok, fin qui mi pare chiaro. Allora io devo sostituire "Verdana" con un elemento della JList. Ho pensato di creare un array con dentro la lista di caratteri così da fare prima.
Il problema però è questo: come faccio? Cioè qual è il comando per far sì che l'elemento selezionato finisca dentro una variabile che a sua volta va a sostituire "Verdana"? Perché se ho un pulsanto creo un ActionListener, per la lista è uguale? Il problema è che non so cosa scriverci dentro :(
Ho provato a cercare ma proprio non ho trovato nulla, il che è chiaramente impossibile quindi si presuppone che:
1) sono orbo (e infatti sto dettando queste parole al mio fido compagno... ah no :oogle:)
2) non conosco i termini adatti da cercare
3) ho la febbre alta e questo provoca deliri (ipotesi da non scartare :sisi:)

Ora credo che posso tranquillamente farmi ricoverare :D
 
Non ho capito molto bene, comunque ci provo:
- creati un array di font predefiniti:
Codice:
Font array[10] = new Font()
for(int i = 0; i < 10; i++) arrat[i] = new Font(...fai tu...);
ovviamente crealo private e final, oltre che globale per la tua classe;
- nell' actionListener del bottone, potresti fare così:
Codice:
int rand = (int) (Math.random()*10)-1;
//non so il nome dell' oggetto JList, suppongo sia l
l.setFont(array[rand]);
l.repaint();
 
Hai ragione, non s'è capito niente :D
Ci riprovo :)
Io ho questa JList
jlist.jpg


Ora selezionando il terzo elemento (che dovrebbe essere il numero 2 visto che si conta da 0) e cliccando su cambia carattere deve inserire "Courier" in setFont. Io ho creato un array con i caratteri dentro:
String[] fonts = { "Arial", "New Times Roman", "Courier" };
e poi:
JList list;
Font font;

Ho dato come parametro l'array e JList: list = new JList(fonts);

Nell'actionListener devo creare qualcosa che se selezionato l'item 2 (che sarebbe il terzo) questa selezione finisce nella variabile... che ne so... String selFont e che questa variabile va utilizzata in:
font = new Font(selFont, Font.BOLD, 12);

EDIT:
ho visto che getSelectedIndex() restituisce il numero dell'elemento. Ecco, sarebbe perfetto, solo che è un numero :sisi: a me servirebbe che restituisca il valore in string, ossia il nome dentro l'array. Cacchio, io ho qualche problema mentale, non riesco manco io a capire le richieste che faccio :asd:
Torno a cercare

EDIT 2:
in preda alla febbre (ce l'ho serio e non è malaria :D) mi sono rimesso alla ricerca e, nonostante abbia visto e rivisto 3000 volte, stavolta l'occhio è finito su getSelectedValues, ho provato con un System.out.println e ho visto che stampava quello che mi serviva. Allora ho creato un pulsante. Alla fine ho risolto così:
Codice:
public void actionPerformed(ActionEvent e) {
        if (e.getSource() == saluto) {
            testo.ta.setText("Ciao Mondo!");

        }
        
        
        if (e.getSource() == cambia) {
            list.addListSelectionListener(new ListSelectionListener() {
                
                @Override
                public void valueChanged(ListSelectionEvent evt) {
                    selezione = (String) list.getSelectedValue();
                    
                }
            });
            testo.ta.setFont(new Font(selezione, Font.BOLD, 12));
        }
        
    }

Quello che mi chiedo, esiste un modo più semplice? Per pura curiosità :)

EDIT 3 (la storia continua):
ho notato che se seleziono il font e poi clicco sul pulsante cambia carattere la prima volta non fa niente, la seconda imposta il carattere O____O ma com'è possibile?

EDIT 4 (ormai è un poema)
è ufficiale che io sia rinco.
Non so perché m'è venuto da mettere l'addListSelectionListener dentro il comando del pulsante, boh. Comunque l'ho inserito nella classe e funziona tutto alla perfezione :)
 
Ultima modifica:
Pubblicità
Pubblicità
Indietro
Top