Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    19

    Leggere dati della console e stamparli in una JTextArea o simile

    Ciao a tutti, mi stavo esercitando con le gui e gli eventi, ho creato una classe che legge dei dati da una gui con le JTextField e li inserisce in un database, adesso volevo provare ad ampliare l'interfaccia grafica inserendo due pannelli che una volta cliccato su invia dati in uno si visualizzasse la query effettuata che esce nella console(utilizzo eclipse) e nell'altro pannello si visualizzassero i dati della lettura al database, sapete come posso fare per trasferire questi dti che sono stampati nella console in una JTextArea o simili? vi posto il codice fatto fin ora

    codice:
    import java.awt.BorderLayout;
    import java.awt.Container;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextArea;
    
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    
    @SuppressWarnings("serial")
    public class Frame  extends JFrame{
    	
    	public static String DRIVER = "";
    	public static String DB_URL = "";
    	public static String DB_USERNAME = "";
    	public static String DB_PASSWORD = "";
    	
    	public final int LARGHEZZA = 300;
    	public final int ALTEZZA = 150;
    	public final int ASCISSA = 300;
    	public final int ORDINATA = 150;
    		
    		public Frame(int larghezze , int altezza, int ascissa, int ordinata, String titolo, int azione){
    		super(titolo);
    		this.setSize(larghezze, altezza);
    		this.setLocation(ascissa, ordinata);
    		this.setDefaultCloseOperation(azione);
    		
    		//creo il pannello
    		JPanel pannello = new JPanel();
    		JPanel queryPanel = new JPanel();
    		JPanel letturaDatabase = new JPanel();
    		
    		
    		Container contentPane = this.getContentPane();
    		contentPane.add(pannello);
    		contentPane.add(letturaDatabase, BorderLayout.EAST);
    		contentPane.add(queryPanel, BorderLayout.EAST);
    		
    		
    		JLabel cognome = new JLabel("Cognome");
    		pannello.add(cognome);
    		
    		final JTextField testoCognome = new JTextField(10);
    		pannello.add(testoCognome);
    		
    		JLabel nome = new JLabel("Nome");
    		pannello.add(nome);
    		
    		final JTextField testoNome = new JTextField(10);
    		pannello.add(testoNome);
    		
    		JLabel eta = new JLabel("Età");
    		pannello.add(eta);
    		
    		final JTextField testoEta = new JTextField(10);
    		pannello.add(testoEta);
    		
    		//bottone d'invio
    		JButton invia = new JButton ("Invia dati");
    		pannello.add(invia);
    		invia.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent event){ 
    				
    				try {
    					Class.forName(DRIVER);
    					Connection conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
    					String SqlInsert = "INSERT INTO PERSONA (cognome, nome, eta) " +
    					"VALUES ('"+ testoCognome.getText() +"','"+ testoNome.getText() +"','"+ testoEta.getText() +"')";
    					System.out.println(SqlInsert);
    					Statement stQuery = conn.createStatement();
    					stQuery.execute(SqlInsert); 
    					conn.close();
    					} catch (ClassNotFoundException e) {
    					e.printStackTrace();
    					} catch (SQLException e) {
    					e.printStackTrace();
    					} 
    				
    			}});
    		
    		//lettura database
    		JTextArea lettura = new JTextArea();
    		letturaDatabase.add(lettura);
    		try {
    			Class.forName(DRIVER);
    			Connection conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
    			String SqlLeggi = "SELECT cognome,nome,eta FROM PERSONA";
    			Statement stQuery = conn.createStatement();
    			ResultSet resultset = stQuery.executeQuery(SqlLeggi);
    			if (resultset.next())
    			{
    				System.out.println(resultset.getString("cognome"));
    				System.out.println(resultset.getString("nome"));
    				System.out.println(resultset.getString("eta"));
    			}
    			
    			resultset.close();
    			conn.close();
    			} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    			} catch (SQLException e) {
    			e.printStackTrace();
    			}  
    		
    		}
    
    	
    	public static void main(String[] args) {
    		//crea il frame
    		Frame aframe = new Frame(150,200,350,300,"Inserisci i tuoi dati",JFrame.EXIT_ON_CLOSE);
    		aframe.setVisible(true);
    	}
    	
    	
    }
    se riusciste a darmi qualche suggeriemnto poi mi documento anche da sola...grazie in anticipo

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

    Re: Leggere dati della console e stamparli in una JTextArea o simile

    Originariamente inviato da sarama
    volevo provare ad ampliare l'interfaccia grafica inserendo due pannelli che una volta cliccato su invia dati in uno si visualizzasse la query effettuata che esce nella console(utilizzo eclipse) e nell'altro pannello si visualizzassero i dati della lettura al database, sapete come posso fare per trasferire questi dti che sono stampati nella console in una JTextArea o simili?
    Se stavi pensando di "catturare" in modo generico/globale quello che viene scritto su System.out, questo tecnicamente è anche possibile ma non banale (e ci si mettono di mezzo stream e charset).

    Se vuoi stampare qualcosa su System.out, fai pure (tieni presente che finché sei nel IDE hai il log di quanto scritto su System.out/err ma se/quando la tua applicazione "vivrà" per conto suo fuori da un IDE, generalmente per le applicazioni GUI non si ha la console).

    Ma non stare a pensare di "catturare" il System.out .... aggiungi direttamente quello che vuoi nei componenti grafici.
    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
    Registrato dal
    Sep 2011
    Messaggi
    19
    grazie mille per la risposta...mi rendo conto che non riesco a spiegarmi bene, allora io vorrei che i dati di lettura del db che sono nella console comparissero nella gui, magari dentro una text area, e lo stesso per la query che quando viene eseguita viene stampata nella console, vorrei che l'utente vedesse direttamente dalla gui che query è stata fatta...

    però mi sembra di capire che non è cosi facile...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da sarama
    vorrei che i dati di lettura del db che sono nella console comparissero nella gui, magari dentro una text area, e lo stesso per la query che quando viene eseguita viene stampata nella console, vorrei che l'utente vedesse direttamente dalla gui che query è stata fatta...
    textAreaQuery.setText(SqlInsert);

    // puoi resettare prima, se vuoi
    textAreaRisultati.append(....);
    textAreaRisultati.append(....);
    // o componi una grossa stringa e setti 1 volta sola.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    19
    davvero molto gentile grazie, dovrei essere riuscita

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.