2010-02-18 102 views
1

我寫使用swing.So以後會有一個JScrollPane加到JPanel的N,然後我將在verticle方式如何設置在JPanel上添加的按鈕的大小和邊界?

JPanel panel=new JPanel(); 
panel.setBackground(Color.WHITE); 
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 
int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS; 
int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS; 
JScrollPane jsp=new JScrollPane(panel,v,h); 
jsp.setPreferredSize(new Dimension(600,600)); 
jsp.setBounds(150,670,850,200); 
frame.add(jsp); 

然後我添加按鈕添加固定大小的按鈕的JPanel到它在Java代碼在運行時。

for(i=0;i<n;i++) 
{ 
    button[i]=new JButton(); 
    button[i].setBounds(20,y,120,120); 
    button[i].setSize(120,120); 
    button[i].setToolTipText(file[i].toString());   
    button[i].setIcon(Icon); 
    panel.add(button[i]);  
    y=y+140; //initially y=20 so 1st button on x=20,y=20 2nd button on x=20,160 
} 

我想添加一個按鈕,一個下方的另一...(即我得到一個verticle滾動條)

即Button1的

button2 

    ' 

    ' 

問題是大小和按鈕的邊界我設置使用setsize/preffered大小和setbounds是不影響大小和位置按鈕(這是在面板上添加)...

該怎麼辦? 任何人都可以幫助我?

+0

你在這個主題的原始發帖中給出了答案,但尚未回覆,所以我不會在這裏浪費時間。答案依然如此,請使用合適的佈局管理器。使用setSize()和setBounds()「不會」工作。 – camickr 2010-02-18 16:17:29

回答

1

嘗試setMaximumSize()

+0

謝謝.....它的大小使用setMaximum size ....但如何設置綁定????? – PPB 2010-02-18 17:39:18

0

的大小將由LayoutManager和只有特定的LayoutManager的尊重一個Component的優選大小來確定。例如,使用BorderLayout並將JButton添加到中心(即BorderLayout.CENTER)將導致該按鈕展開以佔據所有可用空間。

從BoxLayout API:「BoxLayout嘗試按其首選寬度(對於水平佈局)或高度(對於垂直佈局)安排組件。」「。所以在你的情況下,所有的按鈕將被製作得像最寬的按鈕一樣寬。爲避免這種情況,您可以使用GridBagLayout;有一個教程here

+0

如果你可以檢查我的問題(在代碼行3)我已經設置佈局管理器作爲其他和其他問題獲得按鈕在列n設置大小現在只解決問題是位置的按鈕......請幫助我, – PPB 2010-02-18 16:01:21

+0

道歉 - 我錯過了那一行。我修改了我的答案;特別參見第2段。 – Adamski 2010-02-18 16:05:18

2

如果你想設置(用手)的組件的位置和大小,容器不應該使用的佈局管理,即,將其設置爲null刪除默認的管理員:

panel.setLayout(null); 
    ... 
     button[i].setBounds(20, y, 120, 120); 
     // setSize is not needed 
     ... 
     panel.add(button[i]); 
+0

很棒.. thanx ..浪費了很多時間在那些愚蠢的佈局經理.. x-( – letsc 2011-03-11 06:06:17