我定义了一个Panel,因为实际的需要,我使用FlowLayout布局。然后我使用panel.add(button)方法把按钮都加在这个Panel上,按钮的数量是变化的。这样按钮就一个接一个的排在了panel上。但我现在需要这种效果,就是第一个按钮比较特别。我需要把它放在单独的一行,也就是第一行只放这一个按钮。其它的按钮从第二行开始就这样排下去。请问该怎么写add函数呢?
另外一个问题是:我定义了一个panel,这个上面有一个按钮和一张图片。然后添加到一个scrollpanel上。举个例子来说,现在有10个人,我就要生成10个这样的panel(都是有一个按钮和一张图片)。我的问题是:如果现在有10个panel添加上去了,我希望点其中一个Panel的按钮就可以控制到属于这个panel的图片。请问该怎么控制了?界面我都设计好了,但是我不知道该怎么把属于某个panel的按钮和图片联系在一起?分数可以不停追加哈
另外一个问题是:我定义了一个panel,这个上面有一个按钮和一张图片。然后添加到一个scrollpanel上。举个例子来说,现在有10个人,我就要生成10个这样的panel(都是有一个按钮和一张图片)。我的问题是:如果现在有10个panel添加上去了,我希望点其中一个Panel的按钮就可以控制到属于这个panel的图片。请问该怎么控制了?界面我都设计好了,但是我不知道该怎么把属于某个panel的按钮和图片联系在一起?分数可以不停追加哈
第一個panel加入你的特殊的button放在上面
第二個panel加入你的剩余的button放在下面
2.在你生成每一個人的panel的時候,你可以把這個panel里面的button和圖片放入到一個hashmap里面 加上一個統一的監聽,然後在監聽事件里面 找到事件源 然後對應到相應的圖片
有兩種方法:
1.如果你在初始化的時候 已經可以知道要改變圖片的所有屬性,則在初始化的時候,就可以給每個按鈕加上自己的監聽。這樣后面就不用控制了
2.如果你不能在初始化的時候知道所有的屬性,那就實例化一個統一的listener,然後所有的button都加上這個listener,并在初始化每個panel的時候,把button和photo的panel加到hashtable里面,這樣就可以在后面的監聽方法里面去區別每一個e.getsource(),也可以對應到相應的photo了
pane.setLayout(new BorderLayout());
JPanel paneButton1 = new JPanel();
pane.add(paneButton1,BorderLayout.NORTH);
JPanel paneButtonOther = new JPanel();
pane.add(paneButtonOther,BorderLayout.CENTER);paneButton1.add(button1);paneButtonOther.add(button2);
paneButtonOther.add(button3);
paneButtonOther.add(button4);
.
.
.第二个问题:
因为你没的把代码贴出来,所以我只能提供一个参考了
在button中添加单击事件,当button被单击时,你可以通过button的button.getParent()
得到此button相应的panel,这样就可以得到panel的所有东西,那你就可以便随心所欲的干你想干的事了,
不管图片还是其它组件,你想怎么删,就怎么删。
第二个问题,
既然你已经定义了一个子组件 panel 在这个组件里的 button和image只有一个吧 处理方法写在这里不就可以了 怎么会有区分button和image关系的问题
class Imagepanel extend Panel{
public Imagepanel(URL imageurl){//button...
//button.addactionlistener(...
}
actionperform......
}
分布方式的选择也可以用上。GridBagLayout虽然麻烦一点,但是功能更强。