Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Inserire JScrollBar

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    80

    Inserire JScrollBar

    Ciao a tutti,
    premetto che sono alle prime armi con la creazione di GUI in Java.
    Sto facendo un programma semplicissimo in cui vengono memorizzati in un ABR gli articoli della Costituzione e inserendo il numero di un articolo in una textfield verrà visualizzato in una label il contenuto dell'articolo.

    Però certi sono lunghetti per cui volevo aggiungere una scrollbar. Ho cercato più volte ma non trovo nulla come la uso? io ho scritto così:

    codice:
    public class GUI extends JFrame{
        private JScrollBar scrollbar = null;
    .....
        public GUI(ABR c){
    ....
            scrollbar = new JScrollBar(JScrollBar.VERTICAL);
            scrollbar.setLocation(360, 1);
            scrollbar.setSize(20, 350);
    ....
            add(scrollbar);
        }
    }
    Come posso fare per fare in modo che il tutto venga spostato quando muovo la scorllbar?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Documentati sul componente JScrollPane e verifica anche se non sia piuttosto il caso di usare anche altri componenti come JList.

    In generale i componenti come JFrame e JPanel non sono scrollabili (non implementano l'interfaccia Scrollable), quindi non sono adatti ad essere, appunto, scrollati. Quindi ci sarà un po' di lavoro manuale da fare perchè dovrai farti carico tu di informare il JScrollPane dell'avvenuta modifica di dimensione dell'area visibile.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    80
    Allora ho inserito uno JScrollPane ma ho ottenuto alcuni effetti indesiderati. Prima nella label in cui viene scritto l'articolo il testo andava a capo automaticamente, mentre ora è tutto di seguito!

    Ecco il codice:

    codice:
    public class GUI extends JFrame{
        private JLabel txt = null, ind = null;
        private JButton cerca = null;
        private JTextField nome = null;
        private ABR cost;
    
        public GUI(ABR c){
            cost = c;
            txt = new JLabel(""); // label in cui viene scritto il testo
            ind = new JLabel("Scrivere il numero dell'articolo");
            cerca = new JButton("Cerca l'articolo");
            nome = new JTextField();
    
            cerca.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    mostraArticolo();
                }
            });
    
            setSize(400, 400);
            setLocation(200, 200);
            setTitle("La Costituzione italiana");
    
            
            cerca.setLocation(75, 30);
            cerca.setSize(125, 25);
    
            nome.setLocation(200, 1);
            nome.setSize(50, 20);
    
            ind.setLocation(1, 5);
            ind.setSize(200, 10);
    
            txt.setLocation(1, 40);
            txt.setSize(355, 315);
    
            JScrollPane scroll = new JScrollPane(txt);
            
            scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
            scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
            
            add(cerca);
            add(nome);
            add(ind);
            add(scroll);
    
            setVisible(true);
        }
    }
    Inoltre quando clicco sul pulsante la textfield sparisce: riappare solo se ridimensiono la finestra.. Dove sbaglio?

  4. #4
    Ti consiglio di NON usare un JLabel per scrivere l'articolo, in quanto il JLabel e strutturato per una riga di testo e quindi non può andare a capo, usa invece la JTextArea.....
    codice:
    String articolo = "testo articolo... bla bla";
    JTextArea areaTesto = new JTextArea();
    areaTesto.setLineWrap(true); // a capo automatico del testo
    areaTesto.setText(articolo);
    JScrollPane scroll = new JScrollPane(areaTesto);
    ............
    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    80
    Esiste qualche altro componente che possa mostrare del testo e non permetta di modificarlo? Tipo la label

  6. #6
    La JTextArea permete di rendere il teso non editabile ;-)

    codice:
    areaTesto.setEditable(false);

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    80
    Ok sono riuscuito a settare tutto correttamente

    solo che quando arriva alla fine di una parola va a capo anche se la parola non è finita.
    Esempio:

    codice:
    prova ciao par
    ola...
    Come posso fare per evitare questo e mandare a capo l'intera parola?

    EDIT: Problema risolto ho usato setWrapStyleWord(true);

  8. #8
    Bene mi fa piacere... ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    80
    Grazie mille

    ciao

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.