Проблема в том, что BoxLayout в некоторых случаях может не правильно рассчитывать размеры компонентов, что не позволяет JTree отображаться полностью. Попробуйте следующие изменения:
Добавьте JScrollPane для JTree, и затем добавьте JScrollPane в JPanel с BoxLayout.
Установите предпочтительный размер для JTree.
public MainWindow() {
Container c = getContentPane();
setLayout(new BorderLayout());
JPanel panel = new JPanel();
BoxLayout layout = new BoxLayout(panel, BoxLayout.X_AXIS);
panel.setLayout(layout);
DefaultMutableTreeNode root = new DefaultMutableTreeNode(new CustomNode("test", null, new ImageIcon(
Objects.requireNonNull(MainWindow.class.getClassLoader().getResource("bomb.png"))
)));
root.add(new DefaultMutableTreeNode("kjsdfbjkalsdbf"));
JTree tree = new JTree(root);
tree.setCellRenderer(new CustomNodeCellRenderer());
JScrollPane scrollPane = new JScrollPane(tree);
panel.add(scrollPane);
tree.setBorder(BorderFactory.createLineBorder(Color.BLUE));
tree.setPreferredSize(new Dimension(200, 360)); // Установите предпочтительный размер для JTree
c.add(panel);
setPreferredSize(new Dimension(480, 360));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
Добавление JScrollPane позволяет JTree корректно отображаться внутри BoxLayout. Установка предпочтительного размера для JTree также помогает определить его размеры корректно.