0

我在使用 Jlist 时遇到问题。我有 ScrollPane,并在其中添加了 Jlist。有时我看不到列表中的第一项。(我也看到列表中其他项目的这种行为)

我很感激任何帮助。

谢谢,在此处输入图像描述

这是代码片段

-JList 创建:

    jAllScrollPane = new JScrollPane();
    jAllScrollPane.getViewport().add(allNetLayer);
    allNetLayer.setVisibleRowCount(3);
  • 我通过以下方法将项目添加到 JList

     void addItemToList(String lay)
     {
            layerInit =1;
            if(lay.compareTo("All") ==0)
            {
                 listData.clear();
            }
            if(lay.compareTo("DONE") == 0)
            {
                 allLay.setListData(listData);
                 jAllScrollPane.updateUI();
            }
            else
            {
                 listData.addElement(lay);
            }
            layerInit =0;
      }   
    
  • 图形用户界面创建:

     javax.swing.GroupLayout jLogPanelLayout = new javax.swing.GroupLayout(jLogPanel);
    jLogPanel.setLayout(jLogPanelLayout);
    jLogPanelLayout.setHorizontalGroup(
                ....
                ....
                .addComponent(jAllScrollPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 200, javax.swing.GroupLayout.DEFAULT_SIZE))
                ....
                ....
            .addContainerGap())
    );
         jLogPanelLayout.setVerticalGroup(
            ....
            ....
             .addComponent(jAllScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 190, javax.swing.GroupLayout.PREFERRED_SIZE)
             ....
             ....
            .addGap(20,20,20))))
    
    );
    jTabbedPane1.addTab("All", jLogPanel);
    
4

2 回答 2

1

您发布的代码非常混乱。编译它也非常困难。

我唯一能为你做的就是

  • 建议 - 阅读@mKorbel 评论并将其铭记于心
  • 使用更简单的布局 - BorderLayout,GridLayout等或MigLayout
  • fire*(data changed)在 Swing 模型上使用方法,repaint()
  • 您可以使用new JScrollPane(<panel inside>)
  • addItemToList应该有单一的责任- 将项目添加到列表中 - 条件不应该存在
  • 您不应重置整个列表模型数据以添加一项
  • 你可以做import- 而不是每次都写javax.swing.GroupLayout
  • 创建 GUI 时不应创建状态 -layerInit
于 2012-06-06T23:23:45.863 回答
0

而不是使用:

jAllScrollPane = new JScrollPane();
jAllScrollPane.getViewport().add(allNetLayer);

要添加组件,请使用JScrollPane.html#setViewportView(java.awt.Component)方法(如果您不想使用带参数的 JScrollPane 构造函数)。

不直接向 JScrollPane 构造函数提供视图的应用程序应使用此方法来指定将在滚动窗格中显示的可滚动子项。

于 2012-06-07T10:45:06.683 回答