在 JScrollPane 中隐藏 JList



当我尝试将JList可见性设置为false以隐藏内容时,我发现当我向下滚动时,列表并没有完全隐藏。我已经尝试了JListJScrollPaneJPanelMainPanel)的validate()repaint(),但没有变化,我也尝试过:

jScollPane.setVerticalScrollBarPolicy(
    javax.swing.ScrollPaneCantants.HORIZONTAL_SCROLLBAR_NEVER);

另外,没有结果。如果我向下滚动滚动条,列表中的某些元素仍然可见。

我看到至少有两种方法可以做到这一点:

  1. 从滚动窗格中删除JListscrollPane.setViewPortView(null);
  2. JList的模型设置为空模型:list.setModel(new DefaultListModel());

另一种选择是更改JViewPort的滚动模式:

scrollpane.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE);

但当然,这根本没有效率。如果您使用该解决方案,则当您使组件再次可见时,请确保还将滚动模式正确重置为效率更高的BLIT_SCROLL_MODEBACKINGSTORE_SCROLL_MODE

最新更新