[英]What is the correct way to make a JScrollPane scroll to the bottom after a component has been inserted?
[英]How to make a JScrollPane scrollable after a component has been added at runtime
不幸的是,我已經多次看到這個問題,但不幸的是,我不知道我做得足夠好,無法解釋我必須在我自己的代碼中實現的內容。
我已經使用 netbeans 中的 GUI 編輯器在此之上創建了一個 JScrollPane 和一個 JPanel。 我知道我可以在運行時創建這些組件以及其他所有組件,但這證明是有問題的,到目前為止,只需在編輯器中添加滾動窗格和面板並在運行時向它們添加組件對我來說都有效。
到目前為止,創建組件並將它們添加到面板是沒有問題的。 我面臨的問題是滾動窗格不會自行更新,以使用戶能夠進一步向下滾動以查看底部創建的組件。 每次按下按鈕時我都會生成“條目”,當前創建一個 JTextField 並將此組件添加到面板,稍后將添加更多組件,但現在這只是實驗。
一旦“條目”的“列表”超過窗口的限制,必須調整窗口大小以查看底部的組件,但在條目達到一定數量(大約 25-30 個)后,組件不再可見滾動條不會向下滾動面板。
這就是我在運行時添加組件的方式...
JTextField txtName1 = new JTextField();
txtName1.setLocation(10, 90);
txtName1.setSize(135, 25);
pnlContainer.add(txtName1);
'pnlContainer' 附加在我的 JScrollPane 'jspContainer' 之上,我正在使用 'repaint()' 方法使組件在面板上可見。
到目前為止,在運行時添加組件已經奏效,所有組件都是可見且可交互的。
我對編程一般來說還很陌生,只有幾年的經驗,非常感謝任何可能有幫助的文檔、教程或其他任何內容。 文檔總是受歡迎的,因為我還有很多東西要學。
JTextField txtName1 = new JTextField();
txtName1.setLocation(10, 90);
txtName1.setSize(135, 25);
pnlContainer.add(txtName1);
到目前為止,在運行時添加組件已經奏效,所有組件都是可見且可交互的。
在上面的代碼示例中,您正在設置每個組件的大小/位置,這意味着您使用的是空布局。 不要使用空布局!!!
Swing 旨在與布局管理器一起使用,當您將面板與布局管理器一起使用時,滾動將正常工作。
布局管理器負責確定面板的“首選尺寸”。 當面板的首選大小大於滾動面板的大小時,面板將自動顯示滾動條。
當您使用空布局時,面板的首選大小為 0,因此永遠不會出現滾動條。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.