java jlist没有';有时不能完全显示其中一项

java jlist没有';有时不能完全显示其中一项,java,swing,jscrollpane,jlist,Java,Swing,Jscrollpane,Jlist,我与Jlist有问题。我有滚动窗格,并向其中添加了Jlist。有时我看不到列表中的第一项。(我也看到了列表中其他项的这种行为) 谢谢你的帮助 谢谢 下面是代码片段 -JList创建: jAllScrollPane = new JScrollPane(); jAllScrollPane.getViewport().add(allNetLayer); allNetLayer.setVisibleRowCount(3); javax.swing.GroupLayout jL

我与Jlist有问题。我有滚动窗格,并向其中添加了Jlist。有时我看不到列表中的第一项。(我也看到了列表中其他项的这种行为)

谢谢你的帮助

谢谢

下面是代码片段

-JList创建:

    jAllScrollPane = new JScrollPane();
    jAllScrollPane.getViewport().add(allNetLayer);
    allNetLayer.setVisibleRowCount(3);
 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);
  • 我使用以下方法将项目添加到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;
      }   
    
  • GUI创建:

        jAllScrollPane = new JScrollPane();
        jAllScrollPane.getViewport().add(allNetLayer);
        allNetLayer.setVisibleRowCount(3);
    
     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);
    

    • 您发布的代码非常混乱。而且它很难编译

      我唯一能为你做的就是

      • 建议-阅读@mKorbel评论并将其铭记于心
      • 使用更简单的布局-
        BorderLayout
        GridLayout
        等,或
        migloayout
      • 在Swing的模型上使用
        fire*(数据已更改)
        方法,重新绘制()
      • 您可以使用
        newjscrollpane()
      • addItemToList
        应具有-将项目添加到列表-条件不应存在
      • 您不应该重置整个列表模型数据以添加一项
      • 您可以执行
        import
        ——而不是每次
        javax.swing.GroupLayout
      • 在创建GUI-
        layerInit
        • 而不是使用:

          jAllScrollPane = new JScrollPane();
          jAllScrollPane.getViewport().add(allNetLayer);
          
          要添加组件,请使用该方法(如果不想使用接受参数的JScrollPane构造函数)

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


          你的密码在哪里?还是我们应该猜测你可能做错了什么?@G
          1)
          提高你的接受率,
          2)
          我认为这是不可能回答的,
          3)
          不要使用setBounds(),
          4)
          使用适当的布局管理器,
          5)
          阅读关于JList的Oracle教程
          6)
          特别是要阅读关于JScrollPane的Oracle教程
          7)
          即使我的魔幻地球仪中的电池已经完全充电,请将生成的a.m.输出发布到GUI