Il componente JTable di Swing gestisce una griglia di dati bidimensionale e quindi, logicamente, ogni cella è indirizzata da una riga e da una colonna. Non ci sarebbe molto altro di particolare da dire su questo (a parte precisare che gli indici di riga/colonna partono da 0) sennonché alcune funzionalità particolari di JTable e inoltre il concetto di utilizzo di un "table model" (che contiene i dati ed è separato da JTable) portano ad alcune conseguenze non subito facilmente evidenti e comprensibili.
Dal momento che questi concetti entrano in gioco in svariate situazioni in cui è necessario gestire le celle di JTable, ho deciso di scrivere un post dedicato solo a questo argomento.
Continua a leggere "Swing - Concetti su righe e colonne in JTable" »
Di tanto in tanto sui vari forum di programmazione che frequento mi capita di leggere domande che chiedono, in maniera più o meno differente, una cosa che volendo riassumere e generalizzare è concettualmente sempre la stessa. Cioè se in Java è possibile fare una certa operazione "particolare" che tipicamente ha a che fare con funzionalità specifiche del sistema operativo o riguarda l'interazione con altre applicazioni in esecuzione (anche non Java) o ancora comporta l'accesso a qualche componente hardware della macchina. E come ulteriore caso particolare si potrebbe voler eseguire del codice già esistente sviluppato in un altro linguaggio (es. C, C++, Assembly o altro).
Generalmente, quando posso, a queste domande rispondo dicendo semplicemente che operazioni molto particolari di quel tipo non sono fattibili in Java "puro" e usando solo il framework di Java SE. E a volte fornisco anche una panoramica (purtroppo sempre troppo breve) di cosa si dovrebbe utilizzare per poterle fare.
Visto che mi sono già imbattuto molte volte in domande di questo tipo, ho deciso di scrivere una piccola guida per cercare di chiarire bene quali sono queste operazioni, il perché non sono fattibili e quali sono gli scenari delle possibili soluzioni.
Continua a leggere "Uso di funzionalità non "standard" in Java" »
Il componente JCheckBox di Swing gestisce un controllo di tipo "check box", la classica casellina con il segno di "spunta". JCheckBox fornisce una serie di metodi per personalizzare la icona che visualizza. Attenzione però: la immagine della icona non deve essere una qualunque perché ... è proprio quella che deve rappresentare la casella da marcare! È prevista la gestione di ben 7 stati differenti, quindi si possono assegnare a JCheckBox altrettanti Icon da visualizzare a seconda dello stato in cui si trova.
L'obiettivo di questo post è di fornire una descrizione di questi stati e di mettere a disposizione una applicazione/applet dimostrativa per testare tutte le varie possibilità.
Continua a leggere "Swing - Personalizzare la icona di JCheckBox" »
In un precedente post (Swing - Uso basilare di JFileChooser) avevo fornito una introduzione all'uso basilare di JFileChooser. Tutta la discussione che avevo fatto però era incentrata solo sulla gestione di JFileChooser per visualizzare una "dialog" a sé stante, che è il caso più tipico e frequente.
In questo post invece voglio descrivere l'uso di JFileChooser come "componente" all'interno di un qualunque "contenitore", che è un caso più particolare e meno frequente. Tuttavia può tornare utile in certe situazioni e quindi merita comunque un po' di attenzione.
Continua a leggere "Swing - Usare JFileChooser come "componente" in una interfaccia grafica" »
Nel precedente post Swing - Introduzione alla gestione dei tooltip ho fornito una introduzione alla gestione dei tooltip in Swing.
In questo post invece voglio fornire un esempio concreto relativo alla gestione di tooltip diversi in aree differenti di un componente.
L'applicazione di esempio che intendo mostrare è volutamente semplice e senza troppi fronzoli ma al tempo stesso credo interessante ed utile. L'obiettivo finale è quello di creare un "pannello" (una estensione di JPanel) che visualizza il classico "piano cartesiano", con i due assi delle ascisse e delle ordinate. L'origine degli assi è fissato nel centro fisico del componente. Ci sono quindi i quattro "quadranti" e in ognuno di essi si vuole gestire un tooltip differente (con le diciture "Primo quadrante", "Secondo quadrante", ecc...).
Continua a leggere "Swing - Esempio di gestione di più tooltip in un componente custom" »
I "tooltip" in generale sono quelle piccole "box" di informazione che possono apparire dopo che il puntatore del mouse si è fermato per un certo periodo di tempo (abbastanza breve, tipicamente) su un elemento particolare di una applicazione o del sistema.
In una applicazione Java che usa Swing è possibile gestire i tooltip a diversi livelli e l'obiettivo di questo post è di fornire una prima introduzione sulle parti di Swing che sono dedicate alla gestione dei tooltip.
Continua a leggere "Swing - Introduzione alla gestione dei tooltip" »
Il componente JList di Swing gestisce una "list box" che visualizza un elenco di elementi. In JList esiste il concetto di "selezione", che permette di evidenziare uno o più elementi tramite mouse e/o tastiera. Ci sono però situazioni in cui si ha la necessità di gestire direttamente gli eventi del mouse su JList, ad esempio il "click" o "doppio-click" o ancora il "click con tasto destro" su un elemento.
Continua a leggere "Swing - Gestire gli eventi del mouse su JList" »
Quando si usano array o liste (si intende implementazioni di java.util.List), una necessità abbastanza frequente è quella di ordinare la sequenza degli elementi secondo un determinato criterio. In certi altri casi, più particolari e meno comuni, si ha invece l'esigenza radicalmente opposta, ovvero mescolare in modo casuale la sequenza degli elementi. Uno scenario tipico di esempio è un gioco di carte in cui si ha un array di oggetti ognuno che "modella" una carta da gioco e si vuole appunto mescolare il "mazzo" di carte.
Continua a leggere "Mescolare gli elementi in array e liste" »
Il framework di Java SE offre diversi modi per leggere (e in misura più limitata anche scrivere) le immagini. L'obiettivo di questo post è di fornire una panoramica abbastanza generale sulle classi e sui metodi che si possono usare per questi scopi.
Continua a leggere "Lettura e scrittura delle immagini in Java SE" »
Nei sistemi operativi (perlomeno DOS/Windows/Unix/Linux e sicuramente anche il Mac OS X, pur non avendo personalmente conoscenza diretta) esiste il concetto di "variabili di ambiente". È un insieme di associazioni tra nomi e valori testuali che viene anche chiamato semplicemente "environment" (ambiente).
Continua a leggere "Le variabili di ambiente in Java" »