簡體   English   中英

動態創建jpanels swing / java列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM