Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Java] Non viene visualizzato il JScrollPane

    Ciao, seguendo alcuni esempi qui su Html.it e altri siti, non riesco a mettere lo scrollPane alla mia textArea. Perché? Eppure l'esempio che ho scaricato va che è una meravoglia!
    Ecco il codice: vedete fin fondo lo scrollPane:
    codice:
    package mercurio;
    import java.awt.*;
    import javax.swing.*;
    
    public class Mercurio extends JFrame 
    {
    	private static final long serialVersionUID = 			1L;
    	private final String TITOLO_APPLICAZIONE =				"Mercurio";
    	private final String nomeIconaFrame =					"icone//iconaProgrammaPrincipale.gif";
    	private JPanel jContentPane;
    	private JButton avviaRicerca;
    	private JButton chiudiProgramma;
    	private JTextArea areaTesto;
    	private JProgressBar barraProgressiva;
    	
    	/**
    	 * Costruisce il pulsante di "Avvia ricerca"
    	 */
    	private JButton costruisciAvviaProgramma()
    	{
    		final String AVVIA_RICERCA = 	"Ricerca dispositivi";
    		final String nomeFile =			"icone//avviaRicerca.gif";
    		ImageIcon icona = new ImageIcon(nomeFile); 
    		avviaRicerca = new JButton();
    		avviaRicerca.setText(AVVIA_RICERCA);
    		avviaRicerca.setIcon(icona);
    		return  avviaRicerca;
    	}
    	
    	/**
    	 * Costruisce il pulsante di "Chiudi Programma"
    	 */
    	private JButton costruisciChiudiProgramma()
    	{
    		final String CHIUDI_PROGRAMMA = 		"Chiudi programma";
    		final String nomeFile =					"icone//chiudiProgramma.gif";
    		ImageIcon icona = new ImageIcon(nomeFile); 
    		chiudiProgramma = new JButton();
    		chiudiProgramma.setText(CHIUDI_PROGRAMMA);
    		chiudiProgramma.setIcon(icona);
    		return chiudiProgramma;
    	}
    	
    	/**
    	 * Costruisce l'area di testo
    	 */
    	private JTextArea costruisciAreaTesto()
    	{
    		areaTesto = new JTextArea(20, 40);
    		areaTesto.setLineWrap(true);
    		areaTesto.setEditable(false);
    		return areaTesto;
    	}
    	
    	/**
    	 * @param args Variabili di entrata (non necessarie)
    	 */
    	public static void main(String[] args) 
    	{
    		SwingUtilities.invokeLater(new Runnable() 
    		{
    			public void run() 
    			{
    				Mercurio thisClass = new Mercurio();
    				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    				thisClass.setVisible(true);
    			}
    		});
    	}
    
    	/**
    	 * This is the default constructor
    	 */
    	public Mercurio() 
    	{
    		super();
    		initialize();
    	}
    
    	/**
    	 * This method initializes this
    	 * 
    	 * @return void
    	 */
    	private void initialize() 
    	{
    		this.setName(TITOLO_APPLICAZIONE);
    		this.setTitle(TITOLO_APPLICAZIONE);
    		this.setSize(500, 500);
    		Image icona = Toolkit.getDefaultToolkit().getImage(nomeIconaFrame);
    		this.setIconImage(icona);
    		this.setLocationRelativeTo(null);
    		this.setResizable(false);
    		this.setContentPane(getJContentPane());
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    
    	/**
    	 * This method initializes jContentPane
    	 * 
    	 * @return javax.swing.JPanel
    	 */
    	private JPanel getJContentPane() 
    	{
    		if (jContentPane == null) 
    		{
    			jContentPane = new JPanel(); 
    			jContentPane.setLayout(new  FlowLayout());
    			avviaRicerca = costruisciAvviaProgramma();
    			chiudiProgramma = costruisciChiudiProgramma();
    			areaTesto = costruisciAreaTesto();
    			JScrollPane spane = new JScrollPane(areaTesto);
    			spane.getHorizontalScrollBar();
    			spane.getVerticalScrollBar();
    			jContentPane.add(avviaRicerca);
    			jContentPane.add(chiudiProgramma);
    			jContentPane.add(areaTesto);
    			jContentPane.add(spane);
    			for(int i=0; i<100; i++)
    			{
    				areaTesto.append("Prima riga" + "\n");
    				areaTesto.append("Seconda riga" + "\n");
    			}
    		}
    		return jContentPane;
    	}
    
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java] Non viene visualizzato il JScrollPane

    Originariamente inviato da Power Dragon
    codice:
    			JScrollPane spane = new JScrollPane(areaTesto);
    ...
    			jContentPane.add(areaTesto);
    			jContentPane.add(spane);
    La questione è solo nella parte quotata. Visto che JScrollPane contiene l'area di testo, allora solo il JScrollPane va aggiunto nel "contenitore" (nel tuo caso è jContentPane).

    I componenti possono avere solo 1 "parente" in senso strutturale, ovvero essere contenuti solo in 1 Container. Come hai fatto tu, prima areaTesto ha come parente il JViewport che sotto-sotto è contenuto nel JScrollPane ma poi aggiungendo espressamente areaTesto in jContentPane lo togli dal JViewport e lo inserisci nel jContentPane e quindi non è più nello scrollpane.

    Per riassumere:
    jContentPane.add(areaTesto); // NO
    jContentPane.add(spane); // SI, solo questo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [Java] Non viene visualizzato il JScrollPane

    Originariamente inviato da Power Dragon
    codice:
    			JScrollPane spane = new JScrollPane(areaTesto);
    			spane.getHorizontalScrollBar();
    			spane.getVerticalScrollBar();
    ... Inoltre quei due get messi così non servono assolutamente a nulla.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Vi ringrazio entrambi per la risposta! Mi siete stati molto utili!

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.