Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Arrivato sul mercato italiano a fine marzo, la serie Boox Go 10.3 (Gen II) offre Android 15, penna da 4096 livelli e retroilluminazione opzionale (nel modello da noi provato, Lumi, presente). La serie si compone di due tablet ePaper che fanno da e-reader, blocco note digitale e persino browser, tutto a un prezzo che fa dimenticare i prodotti di brand più blasonati
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming
Pannello QD-OLED da 32 pollici con risoluzione 4K, frequenza di aggiornamento a 240Hz e tempi di risposta rapidissimi: il Gigabyte MO32U24 evolve il progetto del suo predecessore MO32U e alza ulteriormente l'asticella delle prestazioni. È ancora una volta un monitor indirizzato ai giocatori più esigenti
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
realme 16 5G è un nuovo smartphone con sensore Sony IMX 852 da 50MP sul retro e uno specchio selfie fisico integrato nella camera bar, una prima nel segmento di mercato. Batteria da 6550mAh in un corpo da 8,1mm e 183g, certificazione IP69K e ricarica da 45W completano un pacchetto aggressivo per la fascia media, per uno dei prodotti più interessanti del produttore sul piano commerciale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-11-2006, 12:13   #1
qwerty_giggi
Member
 
Iscritto dal: Nov 2006
Messaggi: 43
[Java] Inserire una lista di immagini in un JScrollPane......

Ciao a tutti....allora vi spiego rapidamente il mio problema:

devo creare una finestra divisa in due parti (finestra divisa verticalmente),la parte sx deve contenere una lista (verticale) di immagini (file .jpg.......di dimensione ridotta) mentre la parte dx l'anteprima dell'immagine selezionata.deve essere possibile usare una scrollBar.

Ho usato uno JSplitPane per dividere in due la finestra,a cui gli ho "assegnato" due JScrollPane(sx,dx). Non riesco ad inserire nel JScrollPane di sx la lista delle immagini....riesco solo a inserire una singola immagine.....che tra l'altro non riesco a ridimensionare....
Come posso fare??????
ho provato anche ad usare due label ,uno per ogni JScrollPane....ma non è cambiato niente!!!!!
Grazie per la pazienza.......

Questa è una parte del codice:

window=new FinestraFile("Presentazione Power Point");
Toolkit theKit=window.getToolkit();
Dimension wndSize=theKit.getScreenSize();
window.setBounds(wndSize.width/4,wndSize.height/4,wndSize.width/2,wndSize.height/2);
window.addWindowListener(this);

JScrollPane AnteprimaImmagine=new JScrollPane();

JButton [] ListaBottoni={ new JButton(new ImageIcon("D:/Checco/Progetto/AnteprimaFinestra/prova1.jpg")),
new JButton(new ImageIcon("D:/Checco/Progetto/AnteprimaFinestra/prova.jpg")),
};
JList list = new JList(ListaBottoni);
JScrollPane listScroller = new JScrollPane(list);
JSplitPane splitPane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
splitPane.setLeftComponent(listScroller);
splitPane.setRightComponent(AnteprimaImmagine);
splitPane.setOneTouchExpandable(true);
splitPane.setDividerLocation(100);
splitPane.setContinuousLayout(true);

window.getContentPane().add(splitPane);
window.setVisible(true);

.......invece di visualizzare i due JButton mi visualizza due stringhe tipo:
javax.swing.JButton[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.5,.....

Aiuto!!!!!!!!!!!!!!!!!!
qwerty_giggi è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2006, 12:52   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da qwerty_giggi
.......invece di visualizzare i due JButton mi visualizza due stringhe tipo:
javax.swing.JButton[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.5,.....

Aiuto!!!!!!!!!!!!!!!!!!
Le cose stanno in questo modo: il cell-renderer di default del JList usa un JLabel per visualizzare delle stringhe di testo negli elementi.

Se vuoi visualizzare qualunque altra cosa che non sia una stringa, devi creare un tuo cell-renderer.
Quindi prova a fare così:

a) Invece di creare un array di JButton, crea un array di JLabel (anche un JLabel può avere una ImageIcon).

b) Crea un nuovo cell-renderer. Prova questo codice:
Codice:
class MyLabelCellRenderer implements ListCellRenderer
{
    public Component getListCellRendererComponent (JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
    {
        JLabel label = (JLabel) value;

        if (isSelected)
        {
            label.setBackground (list.getSelectionBackground ());
            label.setForeground (list.getSelectionForeground ());
        }
        else
        {
            label.setBackground (list.getBackground ());
            label.setForeground (list.getForeground ());
        }

        label.setEnabled (list.isEnabled ());
        label.setOpaque (true);

        return label;
    }
}
c) Quando crei la lista, chiama:
Codice:
list.setCellRenderer (new MyLabelCellRenderer ());
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2006, 14:42   #3
qwerty_giggi
Member
 
Iscritto dal: Nov 2006
Messaggi: 43
JLabel al posto di JButton.......

ok....grande funziona!!!!!le immagini vengono caricate nel JScrollPane di sx....però non riesco a ridimensionarle.....e poi visto che devono essere clikkabili posso farlo lo stesso anche se uso Jlabel?????
mi hai dato una speranza.......ciao ciao e grazie
qwerty_giggi è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2006, 14:53   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da qwerty_giggi
ok....grande funziona!!!!!le immagini vengono caricate nel JScrollPane di sx....però non riesco a ridimensionarle.....
Non ho capito bene ... vuoi ridimensionarle dove: nel JList o nell'altra area a destra??

Quote:
Originariamente inviato da qwerty_giggi
e poi visto che devono essere clikkabili posso farlo lo stesso anche se uso Jlabel?????
La questione non è del JLabel, esso è usato solo per il rendering nella lista. Puoi usare un listener ListSelectionListener per sapere quando la selezione cambia.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2006, 15:01   #5
qwerty_giggi
Member
 
Iscritto dal: Nov 2006
Messaggi: 43
Vorrei ridimensionarle nella JList......cioè fare una finestra simile ad una Power Point.....quindi sulla sx avere la lista di immagini (ridimensionate come in PP)....e poi avere la possibilità,al click su un'immagine,di vedere l'ingrandimento nell'area a dx......
adesso le immagini che carico nella parte sx sono enormi......
scusa....non ho capito ma il Listener lo devo associare ad ogni JLabel creato?
qwerty_giggi è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2006, 15:13   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da qwerty_giggi
Vorrei ridimensionarle nella JList......cioè fare una finestra simile ad una Power Point.....quindi sulla sx avere la lista di immagini (ridimensionate come in PP)....e poi avere la possibilità,al click su un'immagine,di vedere l'ingrandimento nell'area a dx......
adesso le immagini che carico nella parte sx sono enormi......
Ah, ok ho capito. In pratica vuoi mettere delle "miniature" nella lista.
Ridimensionare una immagine in Java è sicuramente possibile. Bisogna andare a vedere le classi per la gestione "avanzata" delle immagini. Non ho codice alla mano ma appena ho tempo faccio qualche ricerca. Vedi anche tu se trovi qualcosa.

Quote:
Originariamente inviato da qwerty_giggi
scusa....non ho capito ma il Listener lo devo associare ad ogni JLabel creato?
No, lo devi associare alla lista. Come ho detto le label servono solo per la fase di rendering. Tutto il resto lo fa la lista (scrolling, gestione della selezione, ecc...)
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2006, 15:21   #7
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Per caricare una "miniatura":

Codice:
final int ALTEZZA = 100; //altezza delle icone
BufferedImage original = ImageIO.read(ilFile);
Image scaled = original.getScaledInstance(-1, ALTEZZA, Image.SCALE_FAST);
Ricorda che in windows puoi abilitare l'accelerazione hardware per il ridimensionamento delle immagini con l'opzione per la JVM:

-Dsun.java2d.ddscale=true

L'accelerazione dovrebbe essere sempre disponibile nel caso in cui si usi la pipeline opengl (-Dsun.java2d.opengl=True)
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2006, 15:41   #8
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da PGI-Bis
Codice:
final int ALTEZZA = 100; //altezza delle icone
BufferedImage original = ImageIO.read(ilFile);
Image scaled = original.getScaledInstance(-1, ALTEZZA, Image.SCALE_FAST);
Ottimo PGI-Bis!!
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2006, 15:43   #9
qwerty_giggi
Member
 
Iscritto dal: Nov 2006
Messaggi: 43
ok....la miniatura funziona....però la risoluzione è davvero scarsa....sembra un'immagine fatta con i puntini.....
quindi devo guardarmi qulacosa sulla gestione avanzata delle immagini????

con questo cosa ci devo fare????? Dsun.java2d.ddscale=true .....non so cosa sia.......grazie dell'attenzione.....
qwerty_giggi è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2006, 16:20   #10
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Per un'icona più raffinata usa l'interpolazione più pesante disponibile:

Codice:
final int ALTEZZA = 100; //altezza delle icone
BufferedImage original = ImageIO.read(ilFile);
Image scaled = original.getScaledInstance(-1, ALTEZZA, Image.SCALE_SMOOTH);
Ottieni un'icona migliore pagando un tot in termini di prestazioni. SCALE_SMOOTH non è accelerabile, al momento. L'opzione -Dsun.java2d.ddscale=true rientra tra i parametri di controllo della pipeline di rendering Java2D e, più in generale, è una delle molte opzioni di "personalizzazione" dell'ambiente di esecuzione Java. Quel parametro lo passeresti all'ambiente Java al momento dell'invocazione del tuo programma:

java -Dsun.java2d.ddscale=true LaClassMain [invio]
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2006, 15:49   #11
qwerty_giggi
Member
 
Iscritto dal: Nov 2006
Messaggi: 43
immagini tutte attaccate......

ok.....ci siamo quasi.....solo che non riesco a distanziare le slide.....le inserisce tutte attaccate....come faccio a distanziarle un po.....
grazie ancora
qwerty_giggi è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2006, 15:59   #12
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da qwerty_giggi
ok.....ci siamo quasi.....solo che non riesco a distanziare le slide.....le inserisce tutte attaccate....come faccio a distanziarle un po.....
grazie ancora
Aggiungi un bordo alla JLabel che restituisce il list cell renderer.
Codice:
Border brd = BorderFactory.createEmptyBorder (5, 5, 5, 5);
label.setBorder (brd);
Nota: import javax.swing.border.*;
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2006, 16:27   #13
qwerty_giggi
Member
 
Iscritto dal: Nov 2006
Messaggi: 43
ok......

ok va benissimo.....sto provando ad associare un MouseListener ad ogni elemento che creo nella JList....


.......All'interno del for che mi controlla la creazione,l'inserimento e la configurazione di ogni immagini che inserisco........

MouseListener listener = new AssociaClick();
lista[i].addMouseListener(listener);
}

class AssociaClick extends MouseAdapter{

public void mousePressed(MouseEvent e)
{ qui dovrei inserire le istruzioni per far visualizzare l'ingrandimento dell'immagine selezionata nel pannello di dx....o sbaglio????
solo che visto che ovviamente ho fatto un file per ogni tipologia di operazioni (Creazione Finestra,Creazione Anteprime,.....),come faccio a riprendere il riferimento la pannello di dx????

}
}
qwerty_giggi è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2006, 16:43   #14
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da qwerty_giggi
ok va benissimo.....sto provando ad associare un MouseListener ad ogni elemento che creo nella JList....
Primo: dovresti associare 1 ListSelectionListener alla JList, per ricevere le info sulla selezione.

Secondo: dovresti creare una classe che incapsula il nome del file e, ad esempio, un ImageIcon con la miniatura. Un array di oggetti di questa classe lo passi poi al JList nel costruttore.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2006, 10:20   #15
qwerty_giggi
Member
 
Iscritto dal: Nov 2006
Messaggi: 43
Listener....

Ho inserito questa istruzione prima del ciclo che mi controlla l'inserimento degli elementi nella JList immagini.....

immagini.addListSelectionListener(new AssociaAntep());

AssociaAntep() è la nuova classe.....ma non dovrei inserire qualche istruzione all'interno del ciclo così da aggiungere un Listener per ogni elemento della JList???
qwerty_giggi è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2006, 11:33   #16
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Ok ... senti, facciamo che ti posto un esempio completo???

Fai così:
- Spacchetta lo zip in allegato (ci sono 5 sorgenti .java).
- Compila con: javac ImageViewerApplication.java.
- Metti qualche immagine a tua scelta gif/jpeg nella stessa directory (il caricamento è "dinamico", prende quello che trova lì).
- Avvia con: java ImageViewerApplication (poi clicca sulle miniature).

Faccio presente che l'esempio che ho scritto è sicuramente migliorabile, sia dal punto di vista della interfaccia utente che per le prestazioni globali.
Ogni commento è ben accetto, naturalmente.
Allegati
File Type: zip ImageViewer.zip (2.4 KB, 20 visite)
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2008, 15:25   #17
ehiezio
Junior Member
 
Iscritto dal: Jul 2008
Messaggi: 5
io devo fare una cosa del genere, anche più semplice,
cercherò di partire dal tuo esempio, grazie mille andbin per averlo condiviso!
ehiezio è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta DLSS 4.5: con Dynamic Frame Generation e MFG 6X ...
Controaccusa di Netgear a TP-Link: 'non ...
GoldenEye 007: dopo oltre 20 anni, &egra...
Snowflake arricchisce le funzionalit&agr...
American Express pronta ad acquisire The...
Batterie liquide senza metalli: scoperto...
FRITZ!, devolo, LANCOM e TDT danno vita ...
Quanto tempo passiamo online? In Italia ...
Fox Corporation si compra Roku per 22 mi...
AMD resuscita Zen+: due nuovi processori...
Debutto cinematografico per HONOR Robot ...
Copilot+ PC, ogni PC con una GPU dedicat...
Dreame taglia i prezzi: come orientarsi ...
L'Italia entra nell'era dei 2 nanometri!...
Stranger Than Heaven rivoluziona il comb...
Honor X80 Pro Max: svelata la data di la...
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: 18:58.


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