jtable

Mattepuffo's logo
JTable: KeyStroke e Action

JTable: KeyStroke e Action

L'altro giorno mi è venuto in mente questo: se volessi aggiornare la mia JTable usando il tasto F5 come faccio su Firefox per aggiornare la pagina?

Ebbene, è possibile e vediamo come fare.

Prima di tutto ci serve un oggetto KeyStroke, che rappresenta un'azione sulla tastiera derivante dalla pressione di un tasto.

Con questo oggetto intercetteremo la pressione del tasto F5 quando il focus è sulla JTable.

Poi aggiungeremo un evento actionPerformed associato al tasto premuto.

Mattepuffo's logo
Righe JTable a colori alternati

Righe JTable a colori alternati

Come detto più volte, JTable è uno dei componenti più potenti e flessibili di Swing.

Oggi vediamo come fare per ottenere le righe a colori alterni, cosa molto comoda quando si hanno parecchie righe.

Per farlo dobbiamo definire uno nostro TableCellRenderer che estende il DefaultTableCellRenderer.

Dopo di che dobbiamo impostarlo come predefinito per la nostra JTable.

Mattepuffo's logo
Esportare una JTable in PDF

Esportare una JTable in PDF

Dopo vari problemi sono finalmente riuscito anche ad esportare la mia bella JTable in PDF con la libreria iText.

Il problema principale è che seguendo i tutorial trovati qua e la veniva salvata solo una parte della JTable.

Grazie ad alcuni suggerimenti sono riuscito a trovare la soluzione finale.

Il funzionamento è questo:

  • clicco su un JMenuItem
  • mi compare un JFileChooser per salvare
  • passo il file alla classe preposta per il PDF e riempio il file con i dati della JTable

Vi posto la classe PDF:

Mattepuffo's logo
Stampare una JTable

Stampare una JTable

Dopo aver visto come stampare con Javascript, oggi vediamo come farlo con Java.

Nel caso specifico io voglio stampare la mia JTable.

Ho aggiunto un JMenuItem e ho impostato un Action Performed.

Stampare una JTable è molto semplice in quanto, come anche altri componenti, eredita il metodo print().

Possiamo anche passargli uno o più parametri; vedete JTable.PrintMode.

Se vedete la pagina possiamo impostare anche più di un parametro.

Nel mio caso me ne basta uno ed è quello che imposta la larghezza in modo che tutte le colonne rientrino nella larghezza della pagina.

In fase di stampa imposto la stampante in modalità orizzontale.

Mattepuffo's logo
Finestra di conferma in Java

Finestra di conferma in Java

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.

Mattepuffo's logo
Singleton

Singleton

Il Singleton è un Design pattern molto usato nell'ambito della programmazione a oggetti.

Detta in maniera breve e brutale, una classe Singleton è una classe che garantisce che soltanto un'unica istanza della classe stessa possa essere creata all'interno di un programma.

Costruire una classe Singleton non è difficile, basta seguire alcune specifiche:

  • il costruttore deve essre private
  • ci si avvale di un metodo statico per accedere all'unica istanza della classe
  • gli altri metodi non sono statici

Vediamo qualche esempio generico in Java e C#.

Java:

public class Singleton {

private static class Singleton instance;

private Singleton() { } // costruttore privato

public static Singleton getInstance() {

return (instance == null) ? (instance = new Singleton()) : instance;

}

// altri metodi non statici

}

C# (esempio ripreso da HTML.it):

using System; public class Singleton { private static Singleton istanza; private Singleton() {} public static Singleton Instance { get { if (instanza == null) { istanza = new Singleton(); } return istanza; } } public void helloWorld() { Console.WriteLine("Hello World"); } } public class usaSingleton { public static void Main() { Singleton.Instance.helloWorld(); } }

Singleton potrebbe usato in tutti quei casi in cui si accede spesso ad una classe di supporto.