jtextfield

Mattepuffo's logo
Implementare un DocumentFilter in una JTextField

Implementare un DocumentFilter in una JTextField

Quello che vogliamo ottenere è questo: una porzione di testo non modificabile in una JTextField, che però si va ad aggiungere al testo finale.

Con Java, fare questo, è abbastanza semplice usando un DocumentFilter.

Oggi vediamo un esempio basico.

Creeremo un JFrame, con una JTextField e un JButton.

Quando premeremo il tasto stamperemo la stringa.

Mattepuffo's logo
Catturare l'output di un comando in Java

Catturare l'output di un comando in Java

Quando lanciamo un comando da un nostro programma in Java (Swing), di default non ne vediamo l'output.

E il motivo è che, generalmente, viene mandato sullo standard output, che non è la interfaccia scritta in Java.

In molti casi, però, potrebbe essere importante catturare l'output, soprattutto per vedere a che punto siamo con la sua esecuzione.

Oggi vediamo proprio questo: come visualizzare l'output di un comando su una JTextArea.

Il programma che lanceremo sarà youtube-dl, programma da riga di comando per scaricare la musica in formato MP3 da Youtube.

Mattepuffo's logo
Testo in maiuscolo in una JTextField

Testo in maiuscolo in una JTextField

Quello che vediamo oggi è come impostare il testo maiuscolo automaticamente in una JTextField.

In pratica dentro alla nostra casella di testo potremmo scrivere solo in maiuscolo.

Per prima cosa dobbiamo creare una classe apposita, che estenda DocumentFilter.

In breve, DocumentFilter è in grado di modicare il contenuto di un Document.

Questa la classe:

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;

public class UppercaseFilter extends DocumentFilter {

    @Override
    public void insertString(DocumentFilter.FilterBypass fb, int offset, String text, AttributeSet attr) throws BadLocationException {
        fb.insertString(offset, text.toUpperCase(), attr);
    }

    @Override
    public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
        fb.replace(offset, length, text.toUpperCase(), attrs);
    }
}

Il metodo insertString viene invocato prima dell'inserimento del testo.

Mattepuffo's logo
Riempire dinamicamente una JTextField

Riempire dinamicamente una JTextField

Mi sono fatto un programmino che carica una colonna da un foglio excel con gli indirizzi email dentro una JComboBox.

Selezionando le voci della JCB mi si riempie dinamicamente una JTextField con ogni indirizzo separato da virgola.

Poi posso inviare la mail agli indirizzi scelti.

Su come leggere un foglio excel potete vedere questo articolo; per inviare la mail quest'altro.

Manca in pratica solo la comodità del riempimento.

Quello che voglio ottenere è questo comportamento: all'inizio la JCB ha il valore * e poi tutti gli indirizzi estrpolati da excel; quando clicco sua una voce che non è * viene aggiunto un indirizzo email seguito dalla virgola come separatore.

La cosa è molto comoda perchè nn dovete stare a pensare continuamente a scrivere i vari indirizzi; vi basterà salvarli una vola su excel.

Per far partire il tutto dovete creare un evento itemStateChanged.

Io l'ho creato con gli automatismi di NetBeans, quindi il codice non è dei più puliti.

Mattepuffo's logo
Impostare filtri in JTable

Impostare filtri in JTable

Articolo riscritto

In questo articolo vediamo come impostare un filtro in una JTable, scrivendo dentro una JTextfield.

In pratica vogliamo ottenere quell'effetto per cui man mano che scriviamo, rimangono solo i dati che "assomigliano" a ciò che scriviamo.

Quello che ci serve è un TableRowSorter, impostato dopo l'inizializzazzione della nostra JTable.

Poi aggiungete una JTextField alla finestra, ed impostate un evento che intercetta quando scrivete.