Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [JAVA] Problema JTable

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    45

    [JAVA] Problema JTable

    Salve a tutti, avrei un piccolo dubbio/problema. Come potrei fare per far in modo che selezionando la riga di una JTable, quella riga va a finire su dei TextField?
    Per farvi capire meglio,

    http://s21.postimg.org/mgdt2oouf/JTable.png

    Avevo pensato ad un qualcosa tipo:

    codice:
    pezzo.setText(table.getSelectedRow());
    ma non sembra funzionare... suggerimenti? Qui di sotto il codice per eventuali test, ringrazio tutti anticipatamente

    codice:
    import java.awt.*;				
    import java.awt.event.*;
    import java.io.IOException;
    import java.net.URI;
    import javax.swing.*;
    import javax.swing.table.*;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import javax.swing.JComponent.*; //Colore tasti
    //import java.awt.Desktop;
    
    class Sfondo extends JPanel{
    	private Image image;
    	
    	public Sfondo(String back){
    		try {
    			image = ImageIO.read(new File (back));
    		} 
    		catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    	
    	public void paintComponent(Graphics g){
    		super.paintComponent(g);
    		if (image==null)
    			return;
    		g.drawImage(image,0,0,null);
    	}
    }
    
    
    class Finestra{
    	
    	//Attributi
    	private JFrame frame;
    	private JMenuBar menbar;
    	private JMenu [] men;
    	private JMenuItem [] menit;
    	private JLabel lpezzo,lmarca,lcosto,lprovenienza;
    	private JTextField pezzo,marca,costo,provenienza;
    	private JButton bapri,bsalva,binserisci,bcancella,bmodifica,btrova;
    	private JTable table;
    	private DefaultTableModel model;
    	Object[][] Magazzino = {
    	    {"Argento", "Argento", new Integer(1000), "USA"},
    	    {"Oro", "Doro",new Integer(300),"USA" },
    	    
            };
            String[] InfoArticolo = {"Pezzo",
                                    "Marca",
                                    "Costo",
                                    "Provenienza"};
    	
    	public Finestra(){
    	frame=new JFrame();
    	menbar = new JMenuBar();
    	men = new JMenu[3];
    	menit = new JMenuItem[8];
    	lpezzo = new JLabel("Nome Pezzo");
    	lmarca = new JLabel("Marca");
    	lcosto = new JLabel("Costo");
    	lprovenienza = new JLabel("Provenienza");
    	pezzo = new JTextField();
    	marca = new JTextField();
    	costo = new JTextField();
    	provenienza = new JTextField();
    	bapri = new JButton("Apri");
    	bsalva = new JButton("Salva");
    	binserisci = new JButton("Inserisci");
    	bcancella = new JButton("Cancella");
    	bmodifica = new JButton("Modifica");
    	btrova = new JButton("Trova");	
    work();
    		
    	}
    		
    		public void work(){	
    		frame.setLayout(null);
                    Sfondo s=new Sfondo("");		
                    s.setLayout(null);
    		s.setBounds(0,0,600,600);	
    		frame.add(s);
    
    			
    		pezzo.setBounds(60,100,100,30);
    	        s.add(pezzo);
    		lpezzo.setBounds(75,50,70,70);
    		s.add(lpezzo);
    			
    		marca.setBounds(185,100,100,30);
    		s.add(marca);
    		lmarca.setBounds(217,50,70,70);
                    s.add(lmarca);
    		
    		costo.setBounds(310,100,100,30);
    		s.add(costo);
    		lcosto.setBounds(342,50,70,70);
                    s.add(lcosto);
    		
    		provenienza.setBounds(435,100,100,30);
    		s.add(provenienza);
    		lprovenienza.setBounds(449,50,70,70);
                    s.add(lprovenienza);	
    		
    		bsalva.setBounds(300,30,100,30);
    		s.add(bsalva);
    		bsalva.setForeground(Color.RED);
    		
    		bapri.setBounds(190,30,100,30);
    		s.add(bapri);
    		bapri.setForeground(Color.RED);
    		
    		binserisci.setBounds(75,190,100,30);
    		s.add(binserisci);
    		binserisci.setForeground(Color.BLUE);
    		
    		bcancella.setBounds(190,190,100,30);
    		s.add(bcancella);
    		bcancella.setForeground(Color.BLUE);
    		
    		bmodifica.setBounds(305,190,100,30);
    		s.add(bmodifica);
    		bmodifica.setForeground(Color.BLUE);
    		
    		btrova.setBounds(420,190,100,30);
    		s.add(btrova);
    		btrova.setForeground(Color.BLUE);
    		
    		//Instanza dei JMenu
    		for(int i=0;i<3;i++){
    			men[i] = new JMenu();
    		}
    		
    		//Instanza dei JMenuItem
    		for(int i=0;i<8;i++){
    			menit[i] = new JMenuItem();
    		}
    			
    		frame.setJMenuBar(menbar); //Aggiunge jmenubar alla finestra
    		
    		//Testo JMenu
    		men[0].setText("File");
    		men[1].setText("Modifica");
    		men[2].setText("?");	
    			
    		//Aggiunge i jmenu al jmenubar
    		for(int i=0;i<3;i++){
    			menbar.add(men[i]);
    		}
    		
    		//Testo JMenu Item
    		menit[0].setText("Apri");
    		menit[1].setText("Salva");
    		menit[2].setText("Inserisci");
    		menit[3].setText("Cancella");
    		menit[4].setText("Ordina");
    		menit[5].setText("Trova");
    		menit[6].setText("Guida in linea");
    		menit[7].setText("I");
    		
    		//Aggiunge i JMenu Item[0]
    		men[0].add(menit[0]);
    		men[0].add(menit[1]);
    		
    		//Aggiungo i JMenu Item[1]
    		for(int i=2;i<6;i++){
    			men[1].add(menit[i]);
    		}
    		
    		//Aggiunge i JMenu Item[2]
    		men[2].add(menit[6]);
    		men[2].add(menit[7]);
    
             
    
    
    	final JTable table = new JTable(Magazzino,InfoArticolo);
    	JScrollPane scrollPane = new JScrollPane(table);
            model=new DefaultTableModel(Magazzino,InfoArticolo);
    	table.setModel(model);
            
            s.add(scrollPane);
    	scrollPane.setBounds(55,295,500,100);
    	pezzo.requestFocus();
    	
    	
    
    
    
    	        frame.setSize(600, 650); //Dimensioni in pixel della finestra
    		frame.setVisible(true);	//Visiblità frame
    		frame.setLocationRelativeTo(null); //Imposta finestra al centro del desktop
                	frame.setResizable(false); //Metodo per impedire alla finestra di essere ridimensionata.
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Impostazione operazione di chiusura processo con la X
    		}
    		
    		
    		
    	}
    
    
    class Negozio {
    	public static void main (String[] s){
    		
    		Finestra c=new Finestra();
    		
    		}
    	
    	}

  2. #2
    non funziona perchè getSelectedRow() ritorna un int, non una stringa.

    al momento in cui selezioni una riga, nell'evento (click o doppio click ad esempio) puoi fare una cosa del genere:
    codice:
    ArrayList<String> list = new ArrayList<String>();
    int numCol = model.getColumnCount();
    Object value = null;
    for (int i = 0; i < numCol; i++) {
      value = tableData.getValueAt(tableData.getSelectedRow(), i);
      list.add(value.toString());
    }
    sicuramente da migliorare, ma in pratica la jtable è formata da righe e colonne.
    cosi facendo quando selezioni una riga prendi tutte le colonne (campi) di quella riga e li metti in un ArrayList.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    45
    Nessun altro?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Originariamente inviato da Chunky2
    Nessun altro?
    Cos'è, una lotteria? Che si vince?

    Almeno prova a dire perchè la soluzione proposta da fermat non va bene... già si è messo di impegno a capire perchè non vada (visto che tu ti sei limitato a dire "non va" senza aggiungere altro)...


    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    45

    Re: Moderazione

    Originariamente inviato da LeleFT
    Cos'è, una lotteria? Che si vince?

    Almeno prova a dire perchè la soluzione proposta da fermat non va bene... già si è messo di impegno a capire perchè non vada (visto che tu ti sei limitato a dire "non va" senza aggiungere altro)...


    Ciao.
    Risolto, grazie.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    7

    TuttoJava

    Sei alle prime armi in Java?
    Posso consigliarti il nuovo portale TuttoJava!
    C'è un Forum per la Community con risorse, manuali,corsi e videocorsi gratis, software e puoi cercare aiuto per il tuo problema.
    Trovi anche un Blog con le ultime News dal mondo Java Oracle e tutto quello che un Developer Java necessita. Inoltre sarà un punto di riferimento per i tuoi problemi o dubbi anche in futuro!!
    Supportiamo i nuovi progetti italiani,no?
    Link: [edited]

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    @yourweb
    Non è carino in questa sede consigliare agli utenti di rivolgersi ad altre community, come non è carino se io entrassi nel tuo ristorante ed andassi dai tuoi clienti a dirgli che se vogliono mangiare una pasta allo scoglio eccezionale possono andare al ristorante all'angolo. Anche perchè questa cosa ha l'odore dello spam.

    Ho editat il link.


    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

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    7

    Tranquillo

    Non è Spam tranquillo!
    E poi mi sono permesso perchè questo Forum non tratta Java, tutt'al più ne ha una sottosezione. Sarebbe più costruttivo che ogni Forum avesse gli utente specifici no? Comunque va bene

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Re: Tranquillo

    Originariamente inviato da yourweb
    Non è Spam tranquillo!
    E poi mi sono permesso perchè questo Forum non tratta Java, tutt'al più ne ha una sottosezione. Sarebbe più costruttivo che ogni Forum avesse gli utente specifici no? Comunque va bene
    Eh??
    Se pariamo del network, certo: HTML.it è un network molto generale, parla di tante cose, non solo di programmazione... ma in questo forum (o sezione, se preferisci, che si chiama Java) si parla, appunto, di Java... a tutto tondo.

    Non so che concetto hai tu di forum, ma non vedo perchè gli utenti di una "sezione" dovrebbero essere legati solo a quella...

    Ma stiamo andando OT.

    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

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.