Desidero impostare un carattere specifico per tutti i componenti in un JPanel
ma preferisco che la domanda sia ancora più generale e non limitata allo JPanel. Come posso impostare il carattere su un elenco di componenti in un contenitore (JFrame o JPanel)?Impostare lo stesso carattere per tutti i componenti Java
risposta
Impostare i valori del carattere in UIManager
per i componenti che si desidera modificare. Ad esempio, è possibile impostare il tipo di carattere utilizzato per le etichette facendo:
Font labelFont = ... ;
UIManager.put("Label.font", labelFont);
notare che diverse aspetto e si sente (L & F) possono avere proprietà differenti per la classe UIManager
, quindi se si passa da una L & F a un altro, potresti avere problemi.
- È possibile utilizzare UIManager
per fare questo ....
Esempio:
public class FrameTest {
public static void setUIFont(FontUIResource f) {
Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof FontUIResource) {
FontUIResource orig = (FontUIResource) value;
Font font = new Font(f.getFontName(), orig.getStyle(), f.getSize());
UIManager.put(key, new FontUIResource(font));
}
}
}
public static void main(String[] args) throws InterruptedException {
setUIFont(new FontUIResource(new Font("Arial", 0, 20)));
JFrame f = new JFrame("Demo");
f.getContentPane().setLayout(new BorderLayout());
JPanel p = new JPanel();
p.add(new JLabel("hello"));
p.setBorder(BorderFactory.createTitledBorder("Test Title"));
f.add(p);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setVisible(true);
}
}
Se uso UIManager I cambi il font nel componente in tutta l'applicazione, ma non lo cambierei solo in uno specifico 'JFrame' o' JPanel'. Grazie – Luca
Ecco un metodo semplice che consente di specificare Font per l'albero componenti intere sotto qualsiasi contenitore (o solo un semplice componente, non importa):
public static void changeFont (Component component, Font font)
{
component.setFont (font);
if (component instanceof Container)
{
for (Component child : ((Container) component).getComponents())
{
changeFont (child, font);
}
}
}
Basta passare il nostro pannello e Font specifici in questo metodo e avrai anche tutti i refactored di childs.
Fantastico, funziona benissimo, ho cambiato il tuo bit di codice in questo modo, e mi sta aiutando, sto postando quel codice nella risposta –
Ispirato da Mikle Grani risposta ho usato il suo codice per aumentare il carattere di ciascun componente in percentuale ottenendo il vecchio fontsize
public static void changeFont(Component component, int fontSize) {
Font f = component.getFont();
component.setFont(new Font(f.getName(),f.getStyle(),f.getSize() + fontSize));
if (component instanceof Container) {
for (Component child : ((Container) component).getComponents()) {
changeFont(child, fontSize);
}
}
}
- 1. Impostare un carattere specifico per tutti i numeri nella pagina
- 2. I componenti sono con lo stesso id dentro ui: repeat
- 3. Angular2 - due componenti con lo stesso percorso
- 4. Come sostituire lo stesso carattere più volte?
- 5. Java Swing: attivazione/disattivazione di tutti i componenti in JPanel
- 6. Ignora tutti i file con lo stesso nome in git
- 7. Se tutti i membri del team utilizzano lo stesso IDE?
- 8. Symfony: È possibile impostare Template per i componenti?
- 9. Java Servlet - ottenere i parametri con lo stesso nome
- 10. Impostare lo stile per tutti gli elementi all'interno di ContentPresenter
- 11. Impostare lo stile per tutti i blocchi di testo in un pannello dello stack
- 12. R/quantmod: più grafici tutti utilizzando lo stesso asse Y
- 13. modo Pythonic di convertire parametri per lo stesso standard in tutti i metodi di una classe
- 14. Impostare la modalità rigorosa in PowerShell per tutti i moduli
- 15. Come attraversare tutti i componenti React compresi i componenti DOM senza TestUtils.findAllInRenderedTree?
- 16. Come stampare lo stesso carattere molte volte con Console.WriteLine()
- 17. Applicare lo stile "cursore: puntatore" a tutti i componenti React con funzione onClick
- 18. AssociationTypeMismatch per lo stesso modello
- 19. Impostare lo stesso valore su più proprietà (CSS)
- 20. Blocco note ++ Sostituire la corrispondenza regolare per lo stesso testo più il carattere accodamento
- 21. Impostare più di un'intestazione HTTP con lo stesso nome?
- 22. Come gestire i file con lo stesso nome in Wix?
- 23. Android WebView bene per tutti i contenuti per lo screening
- 24. Come posso visualizzare correttamente il carattere in tutti i browser?
- 25. Nascondere tutti gli elementi con lo stesso nome classe?
- 26. Come posso ottenere tutti i componenti di un pannello in Java Swing?
- 27. Come rimuovere tutti i componenti figlio di un contenitore?
- 28. Come impostare tight_layout per i grafici matplotlib dopo lo show()
- 29. React.js - utilizzo di inizializzatori di proprietà per tutti i metodi dei componenti
- 30. impostare una configurazione Git ricorsivamente per tutti i sottomoduli
Se uso UIManager cambio il tipo di carattere per la componente in tutta l'applicazione, ma io non potremmo cambiarlo solo in uno specifico 'JFrame' o' JPanel'. Grazie – Luca