Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Abbiamo provato per diversi giorni una new entry del mercato italiano, la Gowow Ori, una moto elettrica da off-road, omologata anche per la strada, che sfrutta una pendrive USB per cambiare radicalmente le sue prestazioni
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
OnePlus 15 nasce per alzare l'asticella delle prestazioni e del gaming mobile. Ma non solo, visto che integra un display LTPO 1,5K a 165 Hz, OxygenOS 16 con funzioni AI integrate e un comparto foto con tre moduli da 50 MP al posteriore. La batteria da 7.300 mAh con SUPERVOOC 120 W e AIRVOOC 50 W è la ciliegina sulla torta per uno smartphone che promette di offrire un'esperienza d'uso senza alcun compromesso
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media
Vediamo come si comporta il Ryzen 5 7500X3D, nuovo processore di casa AMD che fonde 6 core Zen 4 con la tecnologia 3D V-Cache, particolarmente utile in scenari come il gaming. Annunciato a un prezzo di listino di 279€, il nuovo arrivato sarà in grado di diventare un riferimento per i sistemi budget? Ecco cosa ne pensiamo.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-09-2004, 12:26   #1
foxmolder5
Senior Member
 
Iscritto dal: Dec 2001
Messaggi: 2514
[JAVA] gestione JScrollPane

ho una tab ed al suo interno devo inserire un JScrollPane ed in basso alla tab un pulsante che tramite actionListener mi mostri all'interno del JScrollPane il contenuto di una matrice che dovrò disporre in due colonne (prima colonna con una descrizione del numero che sarà presente nella seconda colonna).mi sai dare un mano?
ho creato il JScrollPane con il bottone ma non riesco a posizionarlo come quasi tutta la tab e con in fondo il pulsante e poi non so cosa inserire nell'actionListener per permettere al Jscroll di visualizzare tutte le info della matrice.grazie
foxmolder5 è offline   Rispondi citando il messaggio o parte di esso
Old 15-09-2004, 13:11   #2
foxmolder5
Senior Member
 
Iscritto dal: Dec 2001
Messaggi: 2514
il bottone può essere messo sia sopra che sotto e all'interno del JScrollPanel vorrei avere una tabella con due colonne (perchè la sorgente dei dati è una matrice che ha due colonne e dovrei copiarle quasi pari pari).quando apro il tab la tabella può essere vuota ed inoltre il JScrollPane deve poter supportare lo scroll laterale,se i dati sono tanti
foxmolder5 è offline   Rispondi citando il messaggio o parte di esso
Old 15-09-2004, 16:00   #3
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Questo è il componente col pulsante e la tabella. Devi implementare opportunamente il metodo getData in modo che restituisca un array bidimensionale di Object che rapresentano gli oggetti della tabella.

Codice:
class MyTablePanel extends JPanel implements ActionListener{
	JButton pulsante;
	JScrollPane scroll;
	//Nomi delle colonne
	String[] colNames = {"Prima colonna", "Seconda colonna"};
	//Dati della tabella
	Object[][] data;
	
	public MyTablePanel(){
		setLayout(new BorderLayout(5, 5));
		pulsante = new JButton("pulsante");
		pulsante.addActionListener(this);
		
		
		//Pannello che contiene il pulsante
		JPanel buttonPanel = new JPanel(new GridBagLayout());	
		GridBagConstraints c = new GridBagConstraints();
		c.insets = new Insets(5, 5, 5, 5);
		buttonPanel.add(pulsante, c);
		add(buttonPanel, "South");
		
		JTable table = new JTable(new Object[5][2], colNames);
		addTablePanel(table);
    }
    
   	private void addTablePanel(JTable table){
   		if(scroll != null)
	   		remove(scroll);
   		//Imposto la larhezza della colonna 0
   		table.getColumnModel().getColumn(0).setPreferredWidth(35);
   		//Imposto la larhezza della colonna 0
		table.getColumnModel().getColumn(1).setPreferredWidth(200);
		JPanel tabPanel = new JPanel(new BorderLayout());
		tabPanel.add(table, "Center");
		tabPanel.add(table.getTableHeader(), BorderLayout.PAGE_START);
		scroll = new JScrollPane(tabPanel);
		add(scroll, "Center");
    	validate();
   	}
    
    public void actionPerformed(ActionEvent e){
   		addTablePanel(new JTable(getData(), colNames));
    }
    
    Object[][] getData(){
    	Object[][] d = {{"uno", "due"},
    				{"tre", "quattro"},
    				{"cinque", "sei"},
    				{"sette", "otto"},
    				{"nove", "dieci"},
    				{"undici", "dodici"}};
    	return d;
    }
}
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 15-09-2004, 19:54   #4
foxmolder5
Senior Member
 
Iscritto dal: Dec 2001
Messaggi: 2514
non riesco a far funzionare il codice.se lo lascio come classe a parte il programma mi parte ma non mi compare proprio la finestra( la classe l'ho richiamata inserendo nella classe della finestra principale "myTablePanel vai = new myTablePanel". se invece provo a toglierlo dalla classe ed inserirlo direttamente nella classe della finestra principale mi vengono fuori molti errori (ho cambiato i nomi e li ho scritti giusti rispettando i nomi degli altri componenti che avevo messo).ma per esempio una domanda, quando scrivi

add(buttonPanel, "South");

non riesco a capire a cosa aggiungi il pannello del bottone.ho provato a fare

c.add(buttonPanel, "South"); ma mi da errore e se lo lascio com'è non esce proprio nulla.
foxmolder5 è offline   Rispondi citando il messaggio o parte di esso
Old 15-09-2004, 20:04   #5
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Il componente va agiunto come classe cosi:

myTablePanel vai = new myTablePanel();

e poi l'istuzione per aggiunerlo dipende se lo aggiungi ad un JFrame:

getConentPane().add(vai);

o ad un altro JPanel:

add(vai);
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 10:04   #6
foxmolder5
Senior Member
 
Iscritto dal: Dec 2001
Messaggi: 2514
grazie.sembra funzionare.un'altra domanda :nella tab della finestra non appare nessun nome,dove devo inserire il nome per dare un titolo al tab (per farlo apparire sulla "linghetta")?
foxmolder5 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 10:16   #7
foxmolder5
Senior Member
 
Iscritto dal: Dec 2001
Messaggi: 2514
ah mi ero dimenticato : nel programma ho l'esigente di inserire dati all'interno della matrice d. ti spiego,sto facendo un prog per gestione del conto bancario e la finestra che hai fatto sarebbe la finestra dell'estratto conto in cui devo mostrare le operazioni che sono state fatte durante la sessione.infatti apro il prog,si avvia la sezione e faccio delle operazioni che saranno memorizzate nella matrice Object e poi se voglio vedo le operazioni tramite la finestra.ho provato a spostare Object[][] d = {{"uno", "due"},
{"tre", "quattro"},
{"cinque", "sei"},
{"sette", "otto"},
{"nove", "dieci"},
{"undici", "dodici"}};

però poi mi da un errore in esecuzione quando clicco sul pulsante.poi creerò un metodo che mi modificare ogni volta l'istanza d ma il prob è che non so poi come inviare i dati allo scroll quando si usa il metodo get() .
foxmolder5 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 15:38   #8
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Non so come è implementata la logica della tua applicazione. Ciò che in genere si fa in queste situazioni è passare al costruttore del pannello che che ti ho implementato un riferimento all'oggetto che mantiene la storia delle operazioni; tale oggetto deve offrire un metodo pubblico tipo:

Object[][] getXXXX()

che restituisce la matrice delle operazioni che poi il pannello si occuperà di visdualizzare nella tabella. Ti consilio di consultare l'ampio tutorial sulla costruzione di interfacce grafiche conm swin che e presnete sul sito della sun:

http://java.sun.com/docs/books/tutor...ing/index.html
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 15:58   #9
foxmolder5
Senior Member
 
Iscritto dal: Dec 2001
Messaggi: 2514
tu nel metodo getData hai istanziato la matrice inserendovi quelle parole e poi hai messo la stessa in return per darla in pasto allo scroller. io quindi avevo pensato di eliminare l'instanziazione della matrice :

Object[][] getData(){
return d;
}

l'instanziazione la farò con un opportuno metodo set che la prima volta crea una matrice MxM e poi le volte successive vi inserisce i dati. per non aver errore dalla modifica fatta sopra ho cambiato :

Object[][] data ----- in ----> Object[][] d

così da non aver errore nel metodo get . il problema è che poi mi viene dato errore in esecuzione per la visualizzazione.ho fatto qualche errore?
ti dico che poi oltre al metodo Object[][] getData() creeròl anche il metodo Object[][] setData() (di cui ho parlato prima).
foxmolder5 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 20:12   #10
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Il campo

Object[][] data;

è superfluo.

L'errore è dovuto al fatto che il campo data non è istanziato e resta null. Scrivi quindi:

Object[][] data = new Object[10][2];

per esempio per instanziarlo ed avere una matrice inche non implementi opportunamente il metodo che deve fornirti tale matrice.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 20:51   #11
foxmolder5
Senior Member
 
Iscritto dal: Dec 2001
Messaggi: 2514
quindi :

Object[][] data ------ in ---> Object[][] data = new Object[10][2]


JTable table = new JTable(new Object[5][2], colNames);
||
||
in
||
||
V

JTable table = new JTable(data, colNames);


poi il metodo getData si cambia in :

Object[][] getData(){

return data;
}


c'è qualche errore?
foxmolder5 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 22:29   #12
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
No,

ma comunque è tutto provvisorio perche come ti ho detto dovrai passare al costruttore di MyTablePanel un oggetto y di una classe che ha un metodo

Object[][] xxxx();

per cui la tabella la costruirai con

new JTable(y.xxxx(), colNames);

nel gestore dell'evento del pulsante, mentre la prima volta, quando i dati ancora non ci sono, la costruisci con

new JTable(new Object[2][10], colNames);

e a questo punto il campo data di MyTablePanel non ha piu motivo di esserci.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 17-09-2004, 00:12   #13
foxmolder5
Senior Member
 
Iscritto dal: Dec 2001
Messaggi: 2514
risolto tutto.il programma funziona e va bene! ora devo finirne 1 altro che avevo lasciato in sospeso.devo vedere se rifarlo da capo oppure cercare di migliorare quello che ho.è difficile quest'altro.
foxmolder5 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2004, 22:08   #14
foxmolder5
Senior Member
 
Iscritto dal: Dec 2001
Messaggi: 2514
una domanda.nel componente che mi hai fatto ho visto che poi quando lo vado ad implementare funziona senza problemi,però nella linguetta della tab non appare nessun titolo.dove lo posso inserire il il titolo della tab all'interno del codice che mi hai dato?
foxmolder5 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2004, 01:08   #15
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Il pannello che ti ho implementato è semplicemente un componente e può essere aggiunto ovunque, non è correlato al JTabbedPane. Per avere il titolo sulla scheda devi utilizzare il metodo

add(String title, Component component)

di JTabbedPane, aiungendo come component il mio pannello.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2004, 09:50   #16
foxmolder5
Senior Member
 
Iscritto dal: Dec 2001
Messaggi: 2514
ho inserito:

Container pannello = new Container();
pannello.add("estratto",tabPanel);

ma qualsiasi cosa inserisca al posto di "tabPanel" non vi è il risultato voluto,o non si vede la griglia o non si vede la finestra, o altro.ho messo un post nella sezione ci puoi dare un'occhiata x favore che non so come fare?!?! oggi è l'ultimo giorno che faccio domande,poi nn rompo + :-)
foxmolder5 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2004, 15:20   #17
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Non devi aggiungere ad un container generico, ma ad un tabbedpane:

JTabbedPane pane = new JTabbedPane();
pane.add("estratto",tabPanel);

PS: perche non ti dai una lettura ai tutorial della sun e alla documentazione delle classi swing? Il 90% dei dubbi che vengono si risolvono semplicemnte leggendo la documentazione delle classi e gli esempi riportati:

http://java.sun.com/docs/books/tutor...ing/index.html
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media AMD Ryzen 5 7500X3D: la nuova CPU da gaming con ...
SONY BRAVIA 8 II e BRAVIA Theatre System 6: il cinema a casa in formato compatto SONY BRAVIA 8 II e BRAVIA Theatre System 6: il c...
KTC H27E6 a 300Hz e 1ms: come i rivali ma a metà prezzo KTC H27E6 a 300Hz e 1ms: come i rivali ma a met&...
4,9 miliardi su Google: Buffett sfida il...
Google ha svelato un agente AI che può g...
Tesla cambia idea: è in arrivo l'...
Anche Firefox punta sull'intelligenza ar...
Stop alle super-accelerazioni delle auto...
Osservatorio AGCOM: sempre più ac...
Sempre più IA su Spotify: arrivan...
iMac M4 crolla a 1.199€ con risparmio di...
Nintendo Switch 2: in rilascio un nuovo ...
Core Ultra 9 290K Plus, Core Ultra 7 270...
Prezzo Black Friday per le super cuffie ...
Crollano i prezzi della cuffie Beats col...
ASUS ROG Matrix RTX 5090 costa 4000 doll...
Grazie ai dati di ESA il calcolo della t...
Rilasciati nuovi video e immagini della ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:06.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v