亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么JScrollPane沒有出現滾動條?

為什么JScrollPane沒有出現滾動條?

瀟湘沐 2019-02-19 03:50:32
import javax.swing.JFrame; import javax.swing.SwingUtilities; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JPanel; import java.awt.Dimension; import java.awt.Component; import java.awt.GridLayout; class Test{ JFrame jframe; JLabel jlabel1; JLabel jlabel2; JLabel jlabel3; JLabel jlabel4; JScrollPane jscrollpane; JPanel jpanel; Dimension size; Test(){ jframe=new JFrame(); jpanel=new JPanel(new GridLayout(4,1)); jlabel1=new JLabel("label1"); jlabel2=new JLabel("label2"); jlabel3=new JLabel("label3"); jlabel4=new JLabel("label4"); jpanel.add(jlabel1); jpanel.add(jlabel2); jpanel.add(jlabel3); jpanel.add(jlabel4); jpanel.setPreferredSize(new Dimension(200,200)); jscrollpane=new JScrollPane(jpanel); jscrollpane.setSize(100,100); jframe.add(jscrollpane); jframe.setSize(new Dimension(300,300)); jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jframe.setVisible(true); jframe.setLayout(null); } public static void main(String arr[]){ SwingUtilities.invokeLater(new Runnable(){public void run(){new Test();}}); } } JPanel的size比jscrollpane還要大,為什么沒出現滾動條?
查看完整描述

1 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

把setVisible(true)放到最后,genius,不然setLayout(null)是不起作用的,在setLayout(null)(空布局器)的情況下,你可以隨意用setSize規定組件的大小,如果有布局管理器的存在,setSize就不會總是起作用了,這時要用setPreferredSize(Dimension)。
回到主題,由于setVisible是在setLayout(null)之前,所以JFrame使用的是默認布局器,當然,如果把null換成FlowLayout或GridLayout之類則會起作用,setVisible在setLayout之前會不起作用只是針對null而言。因為JFrame的布局器是BorderLayout,JScrollPane的setSize無效,并且BorderLayout讓JScrollPane的size與JFrame相等,這樣JPanel的size大于JScrollPane的size就不成立了。

查看完整回答
反對 回復 2019-03-01
  • 1 回答
  • 0 關注
  • 582 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號