È possibile aggiungere dello spazio vuoto tra le righe del nodo in un JTree? Sto usando immagini personalizzate per le icone dei nodi e immagino che le immagini siano più grandi delle icone dei nodi standard, quindi le icone dei nodi sono molto vicine tra loro. Sarebbe più bello se ci fosse un po 'di separazione.Aggiunta di padding/spazio verticale tra le righe in un JTree?
risposta
Per aggiungere una distanza effettivo tra nodi dell'albero si dovrà modificare l'interfaccia utente e restituire un adeguato successore AbstractLayoutCache (per default JTree utilizza due classi, a seconda del valore di altezza di riga: FixedHeightLayoutCache o VariableHeightLayoutCache).
Il modo più semplice per aggiungere qualche spaziatura tra i nodi è modificare rendering, quindi avrà qualche supplementare del bordo, ad esempio:
public static void main (String[] args)
{
JFrame frame = new JFrame();
JTree tree = new JTree();
tree.setCellRenderer (new DefaultTreeCellRenderer()
{
private Border border = BorderFactory.createEmptyBorder (4, 4, 4, 4);
public Component getTreeCellRendererComponent (JTree tree, Object value, boolean sel,
boolean expanded, boolean leaf, int row,
boolean hasFocus)
{
JLabel label = (JLabel) super
.getTreeCellRendererComponent (tree, value, sel, expanded, leaf, row,
hasFocus);
label.setBorder (border);
return label;
}
});
frame.add (tree);
frame.pack();
frame.setLocationRelativeTo (null);
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.setVisible (true);
}
Questo è ancora un po 'più difficile che semplicemente modificando l'altezza della riga statico (come Subs offerto in commento), MA è meglio a causa di diverse dimensioni e stili di font possibili su vari SO. Quindi non avrai problemi di dimensioni ovunque.
A proposito, è anche possibile modificare la rappresentazione della selezione del nodo nel modo desiderato, in questo modo è anche possibile simulare visivamente la spaziatura.
Sì, questo è quello che ho finito (insieme all'impostazione dell'altezza della riga di JTree su 0 in modo tale da rimandare il calcolo dell'altezza al renderer di celle). Funziona abbastanza bene. –
- 1. Aggiunta di spazio verticale tra le righe in vim
- 2. Spazio verticale tra le righe di bootstrap
- 3. Android: Verticale ListView con le righe sovrapposte
- 4. Aggiunta di una spaziatura tra le immagini in un UIScrollView
- 5. Aggiunta di spazio verticale nei documenti Sfinge
- 6. Aggiunta di ritardo tra l'esecuzione di due righe successive
- 7. Aggiunta di righe mancanti
- 8. Aggiunta di una linea orizzontale tra le righe di una tabella lattice utilizzando R xtable
- 9. Aggiunta righe in `uscita dplyr`
- 10. Nascondere/filtrare i nodi in un JTree?
- 11. SQL: trovare le differenze tra le righe
- 12. Riga colorata in JTree
- 13. Android: impossibile rimuovere divario verticale tra le immagini in LinearLayout
- 14. JTree con caselle di controllo
- 15. Matlab aggiunta di righe e colonne elegantemente
- 16. Visualizzare le immagini in un UICollectionView - come ottenere una spaziatura verticale fissa tra le immagini?
- 17. Creazione di un frame di dati e aggiunta di righe
- 18. Differenze di data e ora tra le righe in R
- 19. Aggiunta linea verticale nella trama ggplot
- 20. selezionare le righe dataframe tra due date
- 21. Aggiunta di righe false su un risultato di una query
- 22. Aggiunta di righe al set di dati
- 23. Aggiunta di righe della tabella in modo dinamico in Android
- 24. Aggiunta di righe a un dataframe - il problema di fattore
- 25. Come si imposta lo spazio verticale tra le voci dell'elenco?
- 26. Aggiunta manuale di righe su datagridview
- 27. Aggiunta di una colonna tra due colonne in un data.frame
- 28. linea verticale tra minipagine lattice
- 29. divario verticale css tra div
- 30. Aggiunta manuale di righe al cursore
Hai utilizzato il metodo setRowHeight() di JTree? Puoi impostarlo su 0 per fare in modo che ciascuna riga calcoli la sua altezza individualmente. – Subs