[英]Dynamically create list of jpanels swing/java
我正在嘗試創建面板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的數量低至8,SamplePluginPanels的顏色也不同(請參見下圖)。
問題是,我怎樣才能使它更美觀,不減慢程序運行速度,不給面板塗錯顏色?
任何見解均受到高度贊賞。
我認為答案是豎Box
(實際上,兩列都是2):
Box leftBox = Box.createVerticalBox();
Box rightBox = Box.createVerticalBox();
/* put them together */
setLayout(new GridLayout(2,1));
add(leftBox);
add(rightBox);
還要確保滾動窗格的內容實現Scrollable
並向scrollableTracksViewportWidth()
返回true
。 這將強制相等的寬度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.