基于 SWING 我做了 2个组件 一个是 plane1.java 一个是 palne2.java 然后都放在一个frame里面,设置了plane2不可见,plane1上有个按钮,我想点击的时候 让plane2可见。
   
    怎么搞阿,事件我写好了,就是不知道处理程序怎么写,怎么在plane1里面控制plane2呢,我快急死了。求高手指教

解决方案 »

  1.   

    frame定义palne2实,把palne1的对象传给palne2,这样就可以了!
      

  2.   

    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;public class Test extends JFrame {
    private JButton button_1 = null;
    private JButton button_2 = null;
    private JPanel pane = null;
    private JPanel pane_1 = null;
    private JPanel pane_2 = null; public Test() {
    pane_1 = new JPanel();
    pane_1.setBackground(new Color(255, 0, 0));
    pane_2 = new JPanel();
    pane_2.setBackground(new Color(0, 255, 0));
    button_1 = new JButton("换成JPanel_2");
    button_1.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    pane_1Topane_2();
    }});
    pane_1.add(button_1);
    button_2 = new JButton("换成JPanel_1");
    button_2.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    pane_2Topane_1();
    }});
    pane_2.add(button_2);
    pane = (JPanel)this.getContentPane();
    pane.add(pane_1);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(300, 200);
    this.setVisible(true);
    }

    private void pane_1Topane_2(){
    pane.remove(pane_1);
    pane.add(pane_2);
    pane.updateUI();
    }

    private void pane_2Topane_1(){
    pane.remove(pane_2);
    pane.add(pane_1);
    pane.updateUI();
    } public static void main(String[] arg) {
    new Test();
    }
    }
      

  3.   

    加载的问题搞定了,现在是卸载的问题了
     remove好象没用阿,我先add pane_1 然后再remove pane_1 再add pane_2的时候,pane1 还在上面哈,怎么回事
      

  4.   

    父容器:pane pane1 的加载:
      pane.remove(pane_2);
       pane.add(pane_1);
       pane.updateUI();
    pane2 的加载:
    pane.remove(pane_1);
    pane.add(pane_2);
    pane.updateUI();  测试结果,都可以正常的加载 pane1 和pane2 ,但是都不能卸载pane_1 和 pane_2 求解
      

  5.   

    remove好象没用阿,我先add pane_1 然后再remove pane_1 再add pane_2的时候,pane1 还在上面哈,怎么回事--------------------------------不是很明白你的意思不应该,我给你写的例子中就是先remove后add,很正常啊,进行remove或add操作后用updateUI()重置外观的属性,这样才能显示出更新过的界面。