簡體   English   中英

滾動條在JPanel中不可見

[英]Scroll bar not visible in JPanel

我已經用Java創建了一個GUI,如下所示-

“ panel_mid”是中間的白色面板。 我已將其添加到名為“ panel_mid_scrollpane”的滾動窗格中。

除了“ panel_mid”之外,還有更多面板-

  • panel_left(包含“后退”按鈕)
  • panel_right(在右側可見)

在此處輸入圖片說明

此gui的最新代碼是-

    panel_mid.setBorder(grayborder);
    panel_mid.setBounds(0, 0, 1100, 1060);
    panel_mid.setBackground(Color.white);
    panel_mid.add(obj.create_test_add_section);

    panel_mid_scrollpane = new JScrollPane(panel_mid);
    panel_mid_scrollpane.setLocation(150, 20);
    panel_mid_scrollpane.setSize(1000, 660);
    panel_mid_scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

每次單擊時,panel_mid中顯示的“ 添加節”按鈕都會將一個節添加到中間面板。 多次單擊此按鈕時,GUI看起來像-

在此處輸入圖片說明

如您所見,添加面板時,滾動條不會自動出現,因此最后一個面板只有一半可見。 是什么引起了這個問題?

謝謝 !

當添加到滾動窗格的組件的首選大小大於滾動窗格的大小時,滾動條會自動顯示。

您似乎正在使用空布局。

//panel_mid.setBounds(0, 0, 1100, 1060);
panel_mid.setBackground(Color.white);
panel_mid.add(obj.create_test_add_section);

panel_mid_scrollpane = new JScrollPane(panel_mid);
//panel_mid_scrollpane.setLocation(150, 20);
//panel_mid_scrollpane.setSize(1000, 660);

不要將空布局與setSize()和setLocation一起使用。 Swing旨在與布局管理器一起使用。 如果您使用布局管理器,則滾動條將自動運行,並且將自動為您計算大小和位置。

閱讀有關布局管理器的Swing教程。

您必須告訴GUI刷新,以便再次布置容器。 這將向容器顯示它還必須顯示滾動條。

因此,在ActionListener或用於添加部分的任何內容中,添加如下代碼:

     container_with_sections.validate();
     container_with_sections.repaint();

其中container_with_sections是包含JScrollPane的容器(JContainer),或者是包含包含JScrollPane的容器的容器,依此類推。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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