2010-02-18 104 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