ho una cosa di questo tipo:
In cui sulla sinistra c'e' una JList e sulla destra un JTree che sta dentro un JScrollpane. Vorrei che i nodi del JTree per i quali ho scritto il mio renderer fossero larghi il piu' possibile in modo che ci stia piu' testo possibile, ma non mi e' molto chiaro come fare. Per piu' possibile intendo in modo da occupare tutto lo spazio disponibile ma non di piu'.
Il mio renderer e' fatto cosi':
codice:
private static class ExperimentTreeNodeRenderer extends DefaultTreeCellRenderer implements TreeCellRenderer
{
@Override
public Component getTreeCellRendererComponent (JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus)
{
DefaultTreeCellRenderer cell = (DefaultTreeCellRenderer) super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
Object el = node.getUserObject();
if (el instanceof KoreVM) {
cell.setFont (DEF_VM_FONT);
tree.setRowHeight (0);
cell.setForeground(Color.DARK_GRAY);
cell.setBackgroundNonSelectionColor (DEF_BACKGROUND);
cell.setBackgroundSelectionColor (DEF_BACKGROUND);
cell.setBorderSelectionColor (DEF_BACKGROUND);
KoreVM vm = (KoreVM) el;
if (vm.getProperties().containsKey("status")) {
if (vm.getProperties().get("status").equals(VM_STATES.NON_CREATED.toString())) {
cell.setIcon(new ImageIcon(UIUtils.getScaledIcon(UIUtils.readIcon("vm-noncreated.png"), 24, 24)));
}
if (vm.getProperties().get("status").equals(VM_STATES.DELETED.toString())) {
cell.setIcon(new ImageIcon(UIUtils.getScaledIcon(UIUtils.readIcon("vm-deleted.png"), 24, 24)));
}
else if (vm.getProperties().get("status").equals(VM_STATES.NON_RUNNING.toString())) {
cell.setIcon(new ImageIcon(UIUtils.getScaledIcon(UIUtils.readIcon("vm-nonrunning.png"), 24, 24)));
}
else if (vm.getProperties().get("status").equals(VM_STATES.RUNNING.toString())) {
cell.setIcon(new ImageIcon(UIUtils.getScaledIcon(UIUtils.readIcon("vm-running.png"), 24, 24)));
}
}
cell.setPreferredSize (new Dimension (cell.getPreferredSize().width, 34));
}
else if (el instanceof KoreNetworkInterface) {
cell.setFont (DEF_NIC_FONT);
tree.setRowHeight (0);
cell.setForeground(Color.DARK_GRAY);
cell.setBackgroundNonSelectionColor (DEF_BACKGROUND);
cell.setBackgroundSelectionColor (DEF_BACKGROUND);
cell.setBorderSelectionColor (DEF_BACKGROUND);
KoreVM vm = (KoreVM) ((DefaultMutableTreeNode) node.getParent()).getUserObject();
if (vm != null && vm.getProperties().containsKey("status")) {
if (vm.getProperties().get("status").equals(VM_STATES.NON_CREATED.toString())) {
cell.setIcon(new ImageIcon(UIUtils.getScaledIcon(UIUtils.readIcon("nic-offline.png"), 18, 18)));
}
if (vm.getProperties().get("status").equals(VM_STATES.DELETED.toString())) {
cell.setIcon(new ImageIcon(UIUtils.getScaledIcon(UIUtils.readIcon("nic-offline.png"), 18, 18)));
}
else if (vm.getProperties().get("status").equals(VM_STATES.NON_RUNNING.toString())) {
cell.setIcon(new ImageIcon(UIUtils.getScaledIcon(UIUtils.readIcon("nic-ready.png"), 18, 18)));
}
else if (vm.getProperties().get("status").equals(VM_STATES.RUNNING.toString())) {
cell.setIcon(new ImageIcon(UIUtils.getScaledIcon(UIUtils.readIcon("nic-online.png"), 18, 18)));
}
}
cell.setPreferredSize (new Dimension (cell.getPreferredSize().width, 34));
}
}
return cell;
}
come posso fare?
Altra domandina: come posso cambiare il colore del divider di un JSplitPane?