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.

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.

JProgressBar è il componente usato per mostrare un una barra l'avanzamento di una determinata operazione.

A mio modo di vedere non sono affatto facili da usare, anche perchè per richiedono anche l'uso di un oggetto Thread.

Vediamo un semplice esempio di JPB avviata da un JButton.

Se usate un gui-builder aggiungete i due componenti alla finestra.

Poi create un evento actionPerformed al bottone:

       button.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Thread t = new SetProgressBar(pBar);
                 t.start();
            }
        });

Notate l'oggetto Thread e la nostra classe SetProgressBar.

A questo punto create la classe SetProgressBar, che deve estendere Thread.

Può capitare che impostiamo delle operazioni potenzialmente pericolose nelle nostre applicazioni.

Se stiamo programmando in Java e usiamo le SWING possiamo usare uno dei tanto JOpionPane disponibili per ottenere una finestra di conferma.

Vediamo come.

Nello speicifco la finestra mi permette di dare conferma o meno sulla cancellazione di un record di un db MySQL perso da una JTable.

Quindi selezioni una ruga, clicco su un JButton per la cancellazione e mi compare la finestra di conferma.