Visualizzazione dei risultati da 1 a 10 su 10

Hybrid View

  1. #1
    sempre molto esauriente andbin... il problema (e anche unico) è che le voci del listino sono tante e non so come distribuirle in un JScollPane... ... .... però adesso, in base alle informazioni che mi hai dato suppongo che il JTable sia la pratica migliore (premetto che ancora non la conosco.. e mi metto subito a studiare)... In pratica metto i JCheckBox in un JTable e infine questo in un JScrollPane??.. spero di aver capito bene, nel frattempo mi metto a studiare il JTable..
    PS: per tutto il resto della mia domanda ho risolto (anche graficamente carino) e a breve metto in questa discussione il listato (adesso sarebbe incomprensibile... )
    e cmq GRAZIE e sempre GRAZIE

    il lupo perde il pelo ma non il vizio!
    http://www.pateam.eu
    http://pateam.altervista.org

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da miticogilles Visualizza il messaggio
    il problema (e anche unico) è che le voci del listino sono tante e non so come distribuirle in un JScollPane...
    In generale se si mette es. un JTextArea, JTable, JTree come "view" in JScrollPane e (solo quest'ultimo) lo si inserisce in un contenitore ... tutta la gestione dello scrolling è di fatto già automatica e "di serie".

    Quote Originariamente inviata da miticogilles Visualizza il messaggio
    suppongo che il JTable sia la pratica migliore (premetto che ancora non la conosco.. e mi metto subito a studiare)...
    Per usare bene JTable devi avere ben chiari almeno i concetti sui table model. Per cose più particolari e avanzate, anche i concetti su cell-renderer/editor.

    Quote Originariamente inviata da miticogilles Visualizza il messaggio
    In pratica metto i JCheckBox in un JTable
    Non c'è bisogno di "mettere" dei JCheckBox in JTable. È sufficiente che il table model "esponga" per una certa colonna il tipo (Class) Boolean.class affinché: a) compaia un checkbox in ogni cella della colonna e b) il tipo di oggetti trattati nella colonna siano appunto oggetti java.lang.Boolean.

    Quote Originariamente inviata da miticogilles Visualizza il messaggio
    e cmq GRAZIE e sempre GRAZIE
    Prego! E buon anno.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    In generale se si mette es. un JTextArea, JTable, JTree come "view" in JScrollPane e (solo quest'ultimo) lo si inserisce in un contenitore ... tutta la gestione dello scrolling è di fatto già automatica e "di serie"
    Ecco qui mi sorge un dubbio... io vorrei inserire un componente, come ad esempio un JTable in un JPanel e vorrei che la tabella scrollasse in quanto il JFrame che contiene il tutto è più piccolo della tabella stessa... forse faccio prima a spiegarmi con un esempio:
    codice:
    import javax.swing.*;
    import java.awt.*;
    public class Tabella1 extends JPanel
    {
        public Tabella1()
        {
            Object[][]cells = {{"0,0","0,1","0,2","0,3"},{"1,0","1,1","1,2","1,3"}};
            String[]columnNames = {"Colonna 1", "Colonna 2", "Colonna 3"};
            JTable table = new JTable(cells,columnNames);
            
            //perchè adesso lo scroll non scrolla????? ufff
            JScrollPane scroll = new JScrollPane(table);
            this.add(scroll);
        }
        
    }
    class TabellinaFrame extends JFrame
    {
        public TabellinaFrame()
        {
            this.setSize(200,200);
            Container contentPane = this.getContentPane();
            Tabella1 tab = new Tabella1();
            contentPane.add(tab);
        }
        public static void main(String[]args)
        {
            TabellinaFrame f = new TabellinaFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setVisible(true);
        }
    }
    ... tralasciamo la parte della tabella (lo so che non sto facendo un buon esempio) (ma è stato il primo approccio con JTable... dopo passo a studiare il suo Model).... adesso quello che mi preme è che la tabella si possa vedere per intero anche mettendo resizable(false)

    il lupo perde il pelo ma non il vizio!
    http://www.pateam.eu
    http://pateam.altervista.org

  4. #4
    Mi autorispondo.... guardando negli esempi di Oracle sull'utilizzo di JTable ho capito...
    codice:
    table.setPreferredScrollableViewportSize(new Dimension(200, 200));

    il lupo perde il pelo ma non il vizio!
    http://www.pateam.eu
    http://pateam.altervista.org

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da miticogilles Visualizza il messaggio
    codice:
    table.setPreferredScrollableViewportSize(new Dimension(200, 200));
    Questo di norma, sappilo, non serve. E tra l'altro non ti risolve tutto .... anzi.

    Il tuo codice di prima è tecnicamente corretto ma c'è una questione importante: il JScrollPane l'hai messo in un JPanel che di serie ha un FlowLayout che fa "fluire" i componenti dimensionandoli alla loro dimensione "preferita".

    Nel tuo caso capita che il preferred size di JScrollPane sia ben maggiore dei 200x200 che imponi sul frame, quindi la tabella risulta "troncata". Vuoi risolvere correttamente e meglio? Metti JScrollPane direttamente nel content-pane di JFrame oppure imposta un BorderLayout al tuo Tabella1.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Nel tuo caso capita che il preferred size di JScrollPane sia ben maggiore dei 200x200 che imponi sul frame, quindi la tabella risulta "troncata". Vuoi risolvere correttamente e meglio? Metti JScrollPane direttamente nel content-pane di JFrame oppure imposta un BorderLayout al tuo Tabella1.
    codice:
    import javax.swing.*;
    import java.awt.*;
    public class Tabella1 extends JPanel
    {
        public Tabella1()
        {
            Object[][]cells = {{"0,0","0,1","0,2","0,3"},{"1,0","1,1","1,2","1,3"}};
            String[]columnNames = {"Colonna 1", "Colonna 2", "Colonna 3"};
            JTable table = new JTable(cells,columnNames);
            
            this.setLayout(new BorderLayout());
            JScrollPane scroll = new JScrollPane(table);
            this.add(scroll,BorderLayout.CENTER);
        }
        
    }
    class TabellinaFrame extends JFrame
    {
        public TabellinaFrame()
        {
            this.setSize(400,400);
            Container contentPane = this.getContentPane();
            Tabella1 tab = new Tabella1();
            contentPane.add(tab);
        }
        public static void main(String[]args)
        {
            TabellinaFrame f = new TabellinaFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setVisible(true);
        }
    }
    Il problema che mi ponevo e che mi avevi già risolto in un precedente post, ma io non avevo interpretato bene, era che volevo che venissero messe le barre di scorrimento qualora la tabella fosse di maggiore altezza rispetto alla finestra che la conteneva... Ecco il problema era che non vedevo le barre di scorrimento ... beh.... mi è bastato aggiungere altre 3 righe alla tabella e... magicamente le barre c'erano... scusa per il tempo che t'ho fatto perdere...

    il lupo perde il pelo ma non il vizio!
    http://www.pateam.eu
    http://pateam.altervista.org

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.