扩展分支节点时,jComboBox中的jTree不会自动调整大小

时间:2018-01-25 00:06:34

标签: java swing jcombobox jtree jpopupmenu

我正在尝试修复影响我们的下拉框的Java Swing程序中的错误。树指示文件层次结构,分支节点是文件夹,叶节点是文件。某些文件名很长,因此,只要展开文件夹节点以显示长文件名,就会调整下拉菜单的大小。但是,第一次(并且第一次)展开文件夹节点时,下拉菜单将不会调整大小以适应新显示的内容。如果关闭菜单并重新打开它,甚至只是折叠并重新打开文件夹节点,菜单将调整大小。调整大小代码如下所示,并且实际上每次下拉或分支节点打开/关闭时都会运行。

protected void updatePopup() {
    int comboWidth = c_comboBox.getWidth() + 1;
    int popupWidth = (int) c_tree.getPreferredSize().getWidth();
    int width = Math.max(comboWidth, popupWidth);

    int height = (int) c_tree.getPreferredScrollableViewportSize().getHeight() * 2;

    c_popup.setPopupSize(width, height);
    setPopupSize(width + 10, height);
    ...
}

我很好奇为什么在最初加载节点时下拉列表没有正确调整大小,但是如果节点关闭并重新打开则这样做是正确的。对此有任何帮助将不胜感激,我将继续研究。

0 个答案:

没有答案