jframe

Mattepuffo's logo
Leggere i tag MP3 con Java

Leggere i tag MP3 con Java

In giro si trovano varie librerie per leggere i tag dei file MP3 con java.

Tra le tante ho scelto questa: Jid3lib.

Prima di tutto considerate che esistono varie versioni di tag.

Qui potete una descrizione.

A questo punto partiamo; scaricate la libreria e aggiungetela al vostro progetto.

Quello di cui abbiamo bisogno è uno o più files da scansionare.

Se ad esempio volete scegliere il tutto tramite JFileChooser:

public class Main {

    private static File[] arrayFiles;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                JFileChooser fc = new JFileChooser(System.getProperty("user.home"));
                FileFilter mp3Filter = new FileNameExtensionFilter("MP3", "mp3");
                fc.setFileFilter(mp3Filter);
                fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
                fc.setMultiSelectionEnabled(true);
                int returnVal = fc.showOpenDialog(fc);
                if (returnVal == JFileChooser.APPROVE_OPTION) {
                    arrayFiles = fc.getSelectedFiles();
                }
                FrameList fl = new FrameList(arrayFiles);
                fl.setVisible(true);
            }
        });
    }
}


Dove FrameList è uno JFrame con dentro una JTextArea o un componente affine.

Mattepuffo's logo
Disegnare su JPanel

Disegnare su JPanel

Torniamo a parlare un pò di Java (che purtroppo ho dovuto un pò tralasciare per poco tempo).

Oggi vediamo come poter disegnare un rettangolo con il mouse su un JPanel.

Inoltre dovrà implementare MouseListener e MouseMotionListener e i metodi derivati:

  • mousePressed
  • mouseDragged
  • mouseReleased
  • mouseClicked
  • mouseEntered
  • mouseExited
  • mouseMoved

Gli ultimi 4 metodi però rimarrano vuoti perchè non ci serviranno.

Vediamo come strutturare il tutto:

public class FrameDraw extends JFrame {

    private JScrollPane scroll;
    private int width = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth(); // DIMENSIONE JPANEL
    private int height = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight(); // DIMENSIONE JPANEL

    public FrameDraw() {
        super("Draw panel");
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setLayout(new BorderLayout());
        ImagePanel panel = new ImagePanel();
        scroll = new JScrollPane(panel);
        add(scroll, BorderLayout.CENTER);
    }

// CLASSE PRIVATA JPANEL.

}

Questo è il JFrame principale; ImagePanel sarà il JPanel che andremo ad inserire come classe privata.

Mattepuffo's logo
Creare uno splash screen in Java

Creare uno splash screen in Java

Java mette a disposizione la classe SplashScreen per creare degli splash screen per le nostre applicazioni.

A mio modo di vedere però sono poco flessibili e si possono ottenere cose migliori usando un JWindow.

Io per creare il mio splash ho usato una JWindow temporizzato; così facendo posso impostare qualsiasi aspetto della finestra.

Inoltre con la classe Timer possiamo decidere per quanto visualizzare la finestra.

Mattepuffo's logo
Passare dati da una JTable a un JFrame

Passare dati da una JTable a un JFrame

Lo scenario è questo: abbiamo dei dati su un db che visualiziamo tramite JTable; quando vogliamo modificare un record lo selezioniamo e passiamo i valro a un JFrame che si occuperà di fare questo.

Come fare?

La cosa non è molto difficile.

Dopo aver aggiunto un JButton apposito dobbiamo creare un evento.

Io l'ho fatto fare a NetBeans (sono un pò pigro ).

Mattepuffo's logo
Ridefinire i metodi equals e hashCode in Java

Ridefinire i metodi equals e hashCode in Java

Per il progetto della libreria scritto in Java, mi è capitato di dover ridefinire i metodi equals e hashCode.

Il primo, come si può capire dal nome stesso, serve per controllare l'uguaglianza tra due oggetti.

Questo metodo è legato all'altro, così che se viene ridefinito uno deve essere ridefinito anche l'altro.

Questo perchè l'uguaglianza si basa appunto su un codice hash, che viene trovato dal metodo hashCode.

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.