我正在尝试创建面板 PluginListPanel(扩展 JPanel),它将显示插件面板列表,该列表将尊重插件面板的首选高度,但会强制宽度。我有一个解决方案,但它很慢并且有一个奇怪的错误。在屏幕截图中,有两个这样的面板,一个在左侧,一个在右侧:
我不太了解不同的布局管理器系统,但我知道 BorderLayout 中的 TOP 字段可以满足我的要求。所以,我想出了这个“递归”解决方案:
public PluginListPanel(List<PanelContainer> items) {
JPanel body = this;
for (PanelContainer item : items) {
body.setLayout(new BorderLayout(0, 0));
JPanel panel = new PluginOnePanel(item);
body.add(panel, BorderLayout.NORTH);
JPanel newBody = new JPanel();
body.add(newBody, BorderLayout.CENTER);
body = newBody;
}
}
我遇到的问题是,当我滚动时,系统响应有些慢,并且 SamplePluginPanels 的颜色不同(见下图),即使 SamplePluginPanels 的数量低至 8 个。
问题是,我怎样才能让它更优雅,不减慢程序速度,也不会使面板变色?
任何见解都受到高度赞赏。