C'è un modo per cambiare il disegno di sfondo predefinito di tutte le istanze di un componente di swing (un JPanel per esempio) per dipingere con uno sfondo a gradiente? O dovrei creare un'estensione di JPanel che dipinga con una sfumatura e poi usarla al posto di JPanel ovunque nella mia app?Sfondo sfumato predefinito del componente di rotazione
risposta
IMHO, sarebbe più semplice creare una sottoclasse del componente Swing e ignorare il metodo paintComponent
per eseguire la sfumatura. E poi, come hai detto, usa questo componente personalizzato per tutta l'applicazione.
Potrebbe essere difficile utilizzare le proprietà dell'interfaccia utente poiché potrebbero non essere coerenti su tutti i LaF.
quello era il mio pensiero iniziale. non ero sicuro se ci fosse un modo più semplice per farlo. soprattutto se volessi applicare il gradiente a più tipi di componenti, avrei bisogno di sottoclasse tutti i componenti. –
@JeffStorey, In tal caso, forse sarebbe meglio sottoclasse 'JComponent'. – Moonbeam
Non sono sicuro di come sarebbe utile per più tipi di componenti. Diciamo che stavo cambiando lo sfondo di un pulsante, come sarebbe la sottoclasse di aiuto di JComponent qui? –
Non è del tutto chiaro quale scopo intendete. Intendevi per classe (quindi tutte le istanze di JPanel seguono il nuovo schema di disegno) oppure intendi tutti i componenti in un contenitore (ad esempio, tutto in Frame)?
Ci sono possibilità di fare ciò a seconda della classe del componente, i punti in cui è possibile agganciare sono il Look and Feel e, in base all'istanza del componente, il metodo paintComponent() o se è necessario sostituire il aspetto standard di un componente esistente in cui non è possibile sovrascrivere il metodo perché non si ha il controllo su di esso, fornendo la propria classe di interfaccia utente (guardare Component.setUI) dopo che il componente è stato creato.
Fatta eccezione per l'approccio di sovrascrittura del colore, non è semplice implementare l'approccio. Per la maggior parte delle applicazioni l'approccio semplice è il migliore :)
- 1. Acquisisci il colore di sfondo predefinito del componente altalena
- 2. Sfondo sfumato CSS3
- 3. sfondo sfumato di sfondo e immagine di sfondo DRYly
- 4. Sfondo sfumato radiale in Swift
- 5. animazione Dissolvenza in forma sfondo sfumato
- 6. Come applicare lo sfondo sfumato in andengine
- 7. Come impostare uno sfondo sfumato UITableViewCell?
- 8. Rimuovere lo sfondo sfumato da UIWebView?
- 9. Come posizionare lo sfondo sfumato radiale
- 10. intervallo sfumato di confidenza sfumato
- 11. Applica colore di sfondo sfumato e immagine allo stesso tempo
- 12. Selettore del tempo di rotazione
- 13. Come rendere sfumato lo slideshow di sfondo HTML/CSS?
- 14. Rotazione di un'immagine di sfondo con CSS3
- 15. Come si può creare uno sfondo sfumato senza immagini?
- 16. predefinito di testo (segnaposto) nel componente InputText
- 17. Modifica dello sfondo sfumato lineare dopo un momento
- 18. Componente di una rotazione quaternion attorno ad un asse
- 19. Colore di sfondo predefinito dell'elemento radice SVG
- 20. Problemi di rotazione del bufferImmagine
- 21. plug-in jQuery sfumato?
- 22. Come posso creare uno sfondo sfumato orizzontale per la mia barra di navigazione iOS?
- 23. Migrazione del componente composito al componente personalizzato
- 24. Mappatura del componente NHibernate - Componente nullo
- 25. sovrapponendo una file in formato SVG/PNG in cima alla continua evoluzione sfondo sfumato
- 26. Ri-Animare Sfondo sfumato con colore diverso in rapido in ios
- 27. Immagine chiara con bordo sfumato
- 28. Rettangolo arrotondato con colore sfumato
- 29. Aggiornamento del campo componente durante la pubblicazione del componente
- 30. Come ottenere il colore di sfondo predefinito di JButton?
Non dovresti farlo solo per lo sfondo JPanel, e quindi rendere non tutti gli altri JPanel non opachi? –
@HovercraftFullOfEels, anche questa è un'altra opzione. Se volessi estenderlo ad altri componenti, penso che avrei comunque bisogno di estendere questi componenti. –
@JeffStorey: forse, ma non necessariamente. Puoi creare i tuoi JPanel tramite un semplice metodo di fabbrica che imposta l'opaco su falso, oppure potresti ricorrere attraverso la GUI impostando tutti gli JPanel non di base non opachi. –