我定义了一个Panel,因为实际的需要,我使用FlowLayout布局。然后我使用panel.add(button)方法把按钮都加在这个Panel上,按钮的数量是变化的。这样按钮就一个接一个的排在了panel上。但我现在需要这种效果,就是第一个按钮比较特别。我需要把它放在单独的一行,也就是第一行只放这一个按钮。其它的按钮从第二行开始就这样排下去。请问该怎么写add函数呢?
另外一个问题是:我定义了一个panel,这个上面有一个按钮和一张图片。然后添加到一个scrollpanel上。举个例子来说,现在有10个人,我就要生成10个这样的panel(都是有一个按钮和一张图片)。我的问题是:如果现在有10个panel添加上去了,我希望点其中一个Panel的按钮就可以控制到属于这个panel的图片。请问该怎么控制了?界面我都设计好了,但是我不知道该怎么把属于某个panel的按钮和图片联系在一起?分数可以不停追加哈

解决方案 »

  1.   

    1.你可以 在你的大panel里面再放入兩個小panel
       第一個panel加入你的特殊的button放在上面
       第二個panel加入你的剩余的button放在下面
    2.在你生成每一個人的panel的時候,你可以把這個panel里面的button和圖片放入到一個hashmap里面   加上一個統一的監聽,然後在監聽事件里面  找到事件源   然後對應到相應的圖片
      

  2.   

    可以第一个按钮单独使用布局,其他的按钮使用FlowLayout布局,另外第二个不太明白
      

  3.   

    第二个问题我再描述下:我现在选择了10个用户,选择好后会打开一个新的界面显示这10用户的信息,包括这个用户的图片和一个控制按钮。比如点了这个按钮后就改变属于这个用户的图片。所以我现在定义了一个Panel,把图片和按钮都加在这个panel上作为一个独立的组件。然后比如说我现在选择了10个用户,就加载10个panel。 这个界面我已经实现了。我现在的问题是:怎么样把这个panel上的图片和按钮联系在一起?比如点了某一个panel上的按钮,就可以改变这个panel上的图片?
      

  4.   


    有兩種方法:
    1.如果你在初始化的時候 已經可以知道要改變圖片的所有屬性,則在初始化的時候,就可以給每個按鈕加上自己的監聽。這樣后面就不用控制了
    2.如果你不能在初始化的時候知道所有的屬性,那就實例化一個統一的listener,然後所有的button都加上這個listener,并在初始化每個panel的時候,把button和photo的panel加到hashtable里面,這樣就可以在后面的監聽方法里面去區別每一個e.getsource(),也可以對應到相應的photo了
      

  5.   

    第1个问题:
    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的所有东西,那你就可以便随心所欲的干你想干的事了,
    不管图片还是其它组件,你想怎么删,就怎么删。
      

  6.   

    第一个问题楼上给的解决方法已经很多了,
    第二个问题,
    既然你已经定义了一个子组件 panel 在这个组件里的 button和image只有一个吧  处理方法写在这里不就可以了 怎么会有区分button和image关系的问题
      

  7.   

    如果LZ说的定义了组件不是新起了类的话 那么就用
    class Imagepanel extend Panel{
      public Imagepanel(URL imageurl){//button...
    //button.addactionlistener(...
    }
       actionperform......
    }
      

  8.   

       用panel的嵌入应该可以解决问题,就是一个panel放入另一个panel中。
    分布方式的选择也可以用上。GridBagLayout虽然麻烦一点,但是功能更强。
      

  9.   

    估计楼主的若干按钮图片组的行为方式应该是统一的,所以建议:定义一个继承自Panel的新类,实现ActionListener接口,里面定义两个成员变量(图片和按钮),在构造方法中要求提供图片(如果以后还有用可以多几种重载),最好再带一个父窗口类的实例做参数,这样方便和父窗口的交互,然后,给按钮增加监听,在事件处理中,实现对图片的控制。