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

    [JAVA] swing percentuale ferma al mouse click

    Ciao,
    espongo subito il fatto.
    Ho un Jframe, clicco su un bottone che mi deve far avanzare una percentuale (finta per fare l'esempio)nella console il thread cammina ma nel jtext no finche il bottone non rilascia l'avento.
    come modificare?
    Grazie ...
    codice:
    import java.awt.EventQueue;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.JTextField;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    
    public class Testo extends JFrame {
    
    	private static final long serialVersionUID = 1L;
    	private JPanel contentPane;
    	private JTextField textProgressione;
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					Testo frame = new Testo();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    	/**
    	 * Create the frame.
    	 */
    	public Testo() {
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 450, 85);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    
    		textProgressione = new JTextField();
    		textProgressione.setBounds(10, 11, 143, 20);
    		contentPane.add(textProgressione);
    		textProgressione.setColumns(10);
    
    		JButton btnAvvia = new JButton("avvia");
    		btnAvvia.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				aumentaTesto();
    			}
    		});
    		btnAvvia.setBounds(182, 10, 89, 23);
    		contentPane.add(btnAvvia);
    	}
    
    	/**
    	 * metodo per avanzare il testo
    	 */
    	public void aumentaTesto() {
    		for (int i = 0; i <= 100; i += 10) {
    			System.out.println(i);
    			textProgressione.setText(Integer.toString(i) + "%");
    			try {
    				Thread.sleep(500);
    			} catch (InterruptedException e) {
    			}
    		}
    
    	}
    
    }

  2. #2
    Ciao Shikigami,
    Il probleama è appunto una questione di Thread, perchè il Thread che si occupa di disegnare/aggiornare l'interfaccia è lo stesso che ti richiama le azioni che vengono effettuate da essa.
    Per risolvere il problema la metodologia migliore e quella di un SwingWorker.
    Ciao

  3. #3
    Originariamente inviato da francesco.muia
    Ciao Shikigami,
    Il probleama è appunto una questione di Thread, perchè il Thread che si occupa di disegnare/aggiornare l'interfaccia è lo stesso che ti richiama le azioni che vengono effettuate da essa.
    Per risolvere il problema la metodologia migliore e quella di un SwingWorker.
    Ciao
    Meraviglioso....grazie mille Francesco....
    ora si che funziona!!
    riporto la parte modificata...
    codice:
    public Testo() {
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 450, 85);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    
    		textProgressione = new JTextField();
    		textProgressione.setBounds(10, 11, 143, 20);
    		contentPane.add(textProgressione);
    		textProgressione.setColumns(10);
    
    		JButton btnAvvia = new JButton("avvia");
    		btnAvvia.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				@SuppressWarnings("rawtypes")
    				SwingWorker worker =new SwingWorker() {
    
    					protected  Object doInBackground() throws Exception {
    						aumentaTesto();
    						return null;
    					}
    				};
    				worker.execute();
    			}
    		});
    		btnAvvia.setBounds(182, 10, 89, 23);
    		contentPane.add(btnAvvia);
    	}

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.