我正在尝试修复影响我们的下拉框的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);
...
}
我很好奇为什么在最初加载节点时下拉列表没有正确调整大小,但是如果节点关闭并重新打开则这样做是正确的。对此有任何帮助将不胜感激,我将继续研究。