Visualizzazione dei risultati da 1 a 6 su 6

Discussione: JList personalizzata

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    174

    JList personalizzata

    Voglio creare una JList i cui elementi sono come quelli mostrati in figura, ma provando con ListCellRenderer non sono riuscito a creare il bordo blu allora ho pensato di creare una classe che estende JList e ridefinire il metodo paintComponent, ma quando assegno il model ottengo l'effetto che i dati mi vengono stampati in delle righe e sopra mi viene fatto il disegno -> inutilizzabile perchè non è qll che voglio. Mi dareste una mano a risolvere il problema? Grazie mille in anticipo
    Immagini allegate Immagini allegate

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

    Re: JList personalizzata

    Originariamente inviato da Hermiod
    Voglio creare una JList i cui elementi sono come quelli mostrati in figura
    Ogni cella ha una immagine con a fianco, sulla destra, un testo?

    Originariamente inviato da Hermiod
    ho pensato di creare una classe che estende JList e ridefinire il metodo paintComponent
    Idea peggiore di questa non potevi averla .....

    Originariamente inviato da Hermiod
    Mi dareste una mano a risolvere il problema? Grazie mille in anticipo
    Tra i miei Java Examples (vedi link in firma), sezione AWT/Swing - List boxes, guarda il mio esempio TextAndIconList.java.
    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
    Mar 2009
    Messaggi
    174

    Re: Re: JList personalizzata

    Originariamente inviato da andbin
    Ogni cella ha una immagine con a fianco, sulla destra, un testo?
    Si, e un'immaginetta sotto

    Idea peggiore di questa non potevi averla .....
    Grazie

    Tra i miei Java Examples (vedi link in firma), sezione AWT/Swing - List boxes, guarda il mio esempio TextAndIconList.java.
    Vedo subito

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

    Re: Re: Re: JList personalizzata

    Originariamente inviato da Hermiod
    Si, e un'immaginetta sotto
    Uhm ... allora è più difficile. E con il mio esempio che ho indicato non lo fai. Nel senso che il mio esempio si basa su un renderer che è un JLabel e quindi può avere 1 icon e 1 testo. Non anche un icon sotto il testo!!

    Comunque ho detto che è più difficile ... non impossibile.
    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
    Mar 2009
    Messaggi
    174
    Grazie dei consigli, sono riuscito a mettere anche l'altra immaginetta, ti posto il codice

    codice:
    public Component getListCellRendererComponent(final JList list, final Object value, int index, final boolean isSelected, boolean hasFocus) {
    		return new JPanel() {
    			private static final long serialVersionUID = 1L;
    
    			public void paintComponent(Graphics g) {
    				super.paintComponent(g);
    				
    				Graphics2D g2d = (Graphics2D) g;
    				
    				g2d.setBackground(new Color(152, 152, 255));
    				g2d.drawImage(noteImage, 10, 10, null);
    				g2d.drawImage(deleteImage, getWidth() - 25, getHeight() - 25, null);
    				g2d.drawString((String) value, 75, 20);
    			}
    		};
    	}
    adesso devo cercare di fare il bordo e aggiungere un eventListener all'icona piccola a destra
    Immagini allegate Immagini allegate

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Hermiod
    sono riuscito a mettere anche l'altra immaginetta, ti posto il codice
    Che funzioni .... ok, posso accettarlo. Che sia fatto bene, pulito e logico ..... no.
    Innanzitutto ogni volta istanzi un nuovo JPanel. L'altezza della cella, se non sbaglio, dipende dalla dimensione preferita del componente .... non so se l'hai impostata. E comunque quel paintComponent() messo lì al volo personalmente non mi piace.

    Appena ho un attimo di tempo vedrò di fare un esempio più complesso che prenda in considerazione più oggetti nella cella del JList.

    Originariamente inviato da Hermiod
    aggiungere un eventListener all'icona piccola a destra
    La questione principale è che quello che vedi nella lista non sono "veri" componenti con un proprio "comportamento". Ciò che vedi è solo una "stampa" (nel senso più letterale possibile) del componente fornito dal renderer.
    Devi registrare un MouseListener sul JList, a seguito dell'evento con il Point del click devi determinare l'indice "logico" della cella, determinare il rettangolo della cella, capire se il punto è in quella sotto-area della cella e ..... beh fai poi altro.

    EDIT: vedi locationToIndex() e getCellBounds() entrambi di JList.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.