jlist

Mattepuffo's logo
Impostare un popup menu su una JList

Impostare un popup menu su una JList

Se usiamo le JList, potremmo aver bisogno di impostare un popup menu al click con il testo destro del mouse.

Ad esempio per rimuovere una voce, o per modificarla.

Vediamo come implementare un JPopupMenu su una JList.

NB: non vediamo anche come riempirla, ma ci occupiamo solo del popup.

Mattepuffo's logo
Riempire una JList con ArrayList in Java

Riempire una JList con ArrayList in Java

JList è un componente Java Swing usato principalmente per visualizzare una lista su una gui.

Oggi vediamo come riepirla partendo da un ArrayList.

Come tipo di oggetti, avremo degli String, senza andarci a complicare la vita.

Ma ovviamente possiamo avere anche liste di altri tipo di oggetti.

Partiamo da una JList così definita:

private JList jListProperties = new JList<>();
private DefaultListModel model = new DefaultListModel<>();
jListProperties.setModel(model);

Usiamo un DefaultListModel; non abbiamo pretese più specifiche.

Mattepuffo's logo
Intercettare il doppio click su una JList in Java

Intercettare il doppio click su una JList in Java

Avendo una JList dentro alla nostra alla nostra finestra, vogliamo intercettare il doppio click del mouse, e identificare il valore della voce selezionata.

Tutto quello che ci serve è aggiungere un mouse listener attraverso il metodo addMouseListener, e poi fare l'Override del metodo mouseClicked della classe MouseAdapter.

Mattepuffo's logo
Esportare una JList in Java

Esportare una JList in Java

JList è un componente SWING che rappresenta una serie di oggetti sotto forma di lista.

Qui avevo spiegato come caricare una JLlist da una file XML per esempio.

Oggi vediamo come esportarli in formato TXT.

Inoltre integreremo utto con il solit JFileChooser per decidere dove salvare il file.

Prima di tutto nel vostro JFrame preparate l'evento che poi richiamerà il JFC (ad esempio un menu o un bottone).

Poi preparate il JFC; tipo questo:

import java.io.File;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;

public class FileChooserTxt {

    private static File f = null;

    public static String salva() throws IOException {
        JFileChooser fc = new JFileChooser();
        fc.setDialogTitle("Save TXT");
        fc.setApproveButtonText("Save");
        fc.setApproveButtonToolTipText("Approve file");

        FileFilter txtFilter = new GenericFileFilter("File *.txt", "txt");
        fc.setFileFilter(txtFilter);

        int returnVal = fc.showSaveDialog(fc);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            f = fc.getSelectedFile();
            FileFilter selectedFilter = fc.getFileFilter();
            if (f.getName().indexOf('.') == -1) {
                f = new File(f.getPath() + ".txt");
            }
        }
        return f.toString();
    }
}

Qui ho messo un solo filtro perchè l'esportazione la faccio solo in TXT.

Mattepuffo's logo
Manipolare file XML con Java

Manipolare file XML con Java

Java ha varie librerie per manipolare file XML.

La più utilizzata è JDom, ma nell'esempio che vi posto ho usato la libreria standard che va più che bene per piccole cose.

Vi spiegherò anche come caricare i vari nodi dentro a una JList.

La classe XML ha tre metodi:

  • create
  • read
  • save

Il primo serve per creare un file di inizio, e lo richiamo nell'evento WindowOpened.

Il file xml che creeremo è molto semplice:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<todos>
<todo>cast classe personale book java</todo>
</todos>

Una semplice lista di cose da fare.

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class Xml {

private static File xmlFile = new File("todo.xml");

public static void create() throws ParserConfigurationException, TransformerConfigurationException, TransformerException, IOException {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();

Element todos = doc.createElement("todos");
doc.appendChild(todos);

Element todo = doc.createElement("todo");
todo.appendChild(doc.createTextNode("Da fare 1"));
todos.appendChild(todo);

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
if (!xmlFile.exists()) {
xmlFile.createNewFile();
StreamResult result = new StreamResult(xmlFile);
transformer.transform(source, result);
}
}

........

//altri metodi

}