0

我的JScrollpane. 我正在从列表中添加标签。添加工作正常,我看到了标签。添加的标签数量对我来说是未知的,因此它的边框似乎scrollpane不够用。这就是使用 Scrollpane 的优势,因此如果需要,我实际上可以向下滚动。但是滚动条没有出现。我知道有很多这样的问题,但我几乎尝试了所有提出的建议。我试过setPreferredSize(), setLayout(), scrollPaneApps.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS), 但没有任何效果。

public DisplayProperties() {

   setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
   setBounds(100, 100, 450, 300);
   contentPane = new JPanel();
   setContentPane(contentPane);
   contentPane.setLayout(null);
   contentPane.setPreferredSize(new Dimension(450,300));

   JScrollPane scrollPane1 = new JScrollPane();
   scrollPane1.setBounds(15, 54, 195, 202);
   scrollPane1.setViewportBorder(new LineBorder(new Color(0, 0, 0)));
   scrollPane1.setPreferredSize(new Dimension(185,195));
   scrollPane1.setLayout(null);   
   scrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
   contentPane.add(scrollPane1);


    int b = 0;

    for(String s : XMLParser.ApplicationsListGUI)
    {
        b = b + 20;
        JLabel lbl = new JLabel("lbl"+s);
        lbl.setText(s);
        lbl.setBounds(10,b,100,15);
        scrollPane1.add(lbl);
        scrollPane1.revalidate();   
        lbl.setVisible(true);
    }   
}

那么为什么这个滚动条不出现呢?

4

2 回答 2

4

您似乎涉及两个 JScrollPanes,scrollPaneApps,您设置了一个垂直滚动条策略,您尝试向其添加组件,但您从未将其添加到 GUI,以及您未设置策略的 scrollPane1,从不添加组件,但确实添加到 GUI。对不起,但这太疯狂了。您需要解决此问题,以便您的代码有意义:

  • 将设置了垂直滚动条策略的实际 JScrollPane 添加到 GUI。如果它没有被添加到 GUI 中,那么它永远不会被看到是有道理的。
  • 不要将组件直接添加到 JScrollPane,而是通过该setViewportView(...)方法添加到其 JViewport。或者,您可以向 JScrollPane 构造函数添加一个组件,这只不过是用于将其添加到视口的语法糖。
  • 避免空布局和绝对定位(避免setBounds(...))。使用这些将使您的 GUI 变得僵硬、丑陋,并且以后几乎不可能改进。永远不要将 JScrollPane 的布局设置为 null,因为如果这样做,它将停止工作。完全地。
于 2013-11-02T13:52:04.703 回答
1

它没有显示,因为您没有scrollPaneApps面板的布局。所以删除这一行,它应该会显示出来。

scrollPane1.setLayout(null);

希望能帮助到你。

于 2013-11-02T13:54:24.483 回答