Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Slider personalizzati

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    51

    Slider personalizzati

    Salve, è possibbile come lo è per JButton e JtoggleButton cambiare l'aspetto grafico dei Jslider, intendo avere la barra di scorrimento cosi come il pomello ho disegnati da noi o scaricati da internet e se no un cenno a come si potrebbero realizzare con la libreria Graphics2D. Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da cersil Visualizza il messaggio
    Salve, è possibbile come lo è per JButton e JtoggleButton cambiare l'aspetto grafico dei Jslider, intendo avere la barra di scorrimento cosi come il pomello ho disegnati da noi o scaricati da internet e se no un cenno a come si potrebbero realizzare con la libreria Graphics2D. Grazie
    Non c'è davvero tanto che puoi fare. Una cosa possibile è cambiare il "draggable thumb" (ovvero il blocchettino che l'utente trascina con il mouse). Puoi impostare una tua icona in modo "globale", così TUTTI i JSlider che andrai a creare successivamente avranno quella icona senza che si debba fare altro:

    Icon thumbIcon = ..........
    UIManager.put("Slider.horizontalThumbIcon", thumbIcon);

    Invece di "Slider.horizontalThumbIcon" esiste anche ovviamente "Slider.verticalThumbIcon" per slider verticali.
    Queste stringhe sono particolari, si chiamano in generale UIResource properties. Ce ne sono altre per gli slider, se fai una ricerca in rete trovi sicuramente qualche informazione.

    Prova a creare e caricare una icona di es. 20x20 (o dimensioni similari).
    Ultima modifica di andbin; 15-02-2018 a 11:30
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Quote Originariamente inviata da cersil Visualizza il messaggio
    Salve, è possibbile come lo è per JButton e JtoggleButton cambiare l'aspetto grafico dei Jslider, intendo avere la barra di scorrimento cosi come il pomello ho disegnati da noi o scaricati da internet e se no un cenno a come si potrebbero realizzare con la libreria Graphics2D. Grazie
    Se ti può interessare tempo fa avevo cercato esempi online che mi aiutassero a creare un JSlider con una gamma di colori nella barra di scorrimento per consentire la scelta di un colore specifico (in quella circostanza non volevo usare un JColorChooser, che è ovviamente il componente di swing adatto allo scopo).

    Avevo trovato questo esempio carino (solo riguardo alla track ovviamente, il resto sarebbe stato tutto da implementare): https://stackoverflow.com/a/6996263/6449672, anche se poi avevo risolto facendo in altro modo, non è infatti molto semplice da gestire.
    Se vuoi la risposta più in alto affronta un po' più in generale il tema della modifica dell'aspetto della thumb, fino all'utilizzo del Synth Look And Feel.

    Ho trovato adesso anche un'altra risposta dove si utilizza un Painter<JSlider> e si lavora un po' con la classe Graphics2D: https://stackoverflow.com/questions/...ue-with-nimubs.

    Non so fino a che punto tu voglia arrivare, ma non mi pare ci siano soluzioni semplici e generali, forse ti conviene semplicemente provare con un'icona diversa come suggerisce @andbin.
    Ultima modifica di Ansharja; 15-02-2018 a 16:06

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    51
    Grazie proverò l'icona.
    si utilizza un Painter<JSlider>
    Scusate ma cosa stanno ad indicare quelle parentesi angolari!?
    Ciao

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da cersil Visualizza il messaggio
    Scusate ma cosa stanno ad indicare quelle parentesi angolari!?
    Riguarda i generics, funzionalità introdotta in Java 5
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    51
    Salve,
    Sto ridisegnando l'icona la "draggable thumb"
    Icon thumbIcon = ..........
    UIManager.put("Slider.horizontalThumbIcon", thumbIcon);
    Ma non ho mai usato finora l'interfaccia Icon per caricare un'icona ma solo la classe ImageIcon così:
    codice HTML:
     3 import java.awt.Graphics;
     4 import java.awt.Graphics2D; 5 import java.net.*;
     6 import javax.swing.*;
     7 
     8 class MyIcon extends JComponent{
     9     private ImageIcon icon;
    10     public MyIcon(){
    11      icon = createImageIcon("/image/mano01.png");
    12     }
    13     public void paintComponent(Graphics g) {
    14         super.paintComponent(g);
    15         Graphics2D g2d =(Graphics2D)g;
    16        
    17         icon.paintIcon(this, g2d, 75, 70);
    18     }
    19     
    20     private ImageIcon createImageIcon(String path) {
    21         URL imgURL = getClass().getResource(path);
    22         if (imgURL != null) {
    23             return new ImageIcon(imgURL);
    24         } else {
    25             System.err.println("Non è possibile trovare il file: " + path);
    26             return null;
    27         }
    28     }
    29 }
    Come fare la stessa cosa con Icon. Posso usare ImageIcon sarebbe lo stesso?
    Grazie

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Quote Originariamente inviata da cersil Visualizza il messaggio
    Salve,
    Sto ridisegnando l'icona la "draggable thumb"
    Ma non ho mai usato finora l'interfaccia Icon per caricare un'icona ma solo la classe ImageIcon così:

    Come fare la stessa cosa con Icon. Posso usare ImageIcon sarebbe lo stesso?
    Grazie

    Icon è un'interfaccia e ImageIcon la implementa, quindi sì, ovunque sia richiesto un Icon puoi usare una qualsiasi classe concreta che ne implementi l'interfaccia.


    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 L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da cersil Visualizza il messaggio
    codice:
    class MyIcon extends JComponent
    Te lo ha già chiarito LeleFT, ma te lo ribadisco io: questa classe MyIcon NON la puoi usare per il draggable thumb. Perché è un "componente" e non una icona (nel senso di: implementazione di Icon).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    51
    Ok grazie adesso provo.

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    51
    Salve,
    allora ho provato a cambiare le "draggable thumb" con questo codice ma non funziona:

    codice:
    public class SlaJFrame extends javax.swing.JFrame {
    
    
        public SlaJFrame() {
            initComponents();
           
            ImageIcon icoh = createImageIcon("/image/drago.jpg");
            ImageIcon icov = createImageIcon("/image/dragv.jpg");
    
    
            UIManager.put("Slider.horizontalThumbIcon", icoh);
            UIManager.put("Slider.verticalThumbIcon", icov);       
        }
    
    
        private ImageIcon createImageIcon(String path) {
             URL imgURL = getClass().getResource(path);
             if (imgURL != null) {
                 return new ImageIcon(imgURL);
             } else {
                 System.err.println("Non è possibile trovare il file: " + path);
               return null;
            }
         }
    Lo slider ha sempre il solito pomello. Dov'è che sbaglio.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.