用CardLayout?
最好不要用哦,它太不好用了

解决方案 »

  1.   

    第一  设计得太复杂 逻辑有问题,布局采用社么是无所谓的
    第二  在A里面写入SETBUTTONVALUE()方法 改方法对A里面的值操作 然后REPAINT()
          主要是要理清主线  哪个是MAIN比较合适,在这个类里对其他窗体操作
      

  2.   

    关键是。我REPAINT(),界面根本没有反映啊。。我在A界面。开始点机了A按钮。然后A界面显示了B按钮。并且弹出了C界面。我在C界面完成了一些处理。然后关闭C。这时候A界面需要显示A按钮我已经逻辑混乱了感觉
      

  3.   

    我觉得是你应该在c界面的close()方法中,调用a界面的show()方法来显示A按钮!
      

  4.   

    先批判你一下:作为一个写程序的,怎么能够这么用语言?
    你描述界面用A、B,描述按钮又用A、B,其他怎么搞得清?换一个行不行?幸好鄙人领悟能力还好在JB里随便拖了一个,参考一下(通过编译)://A.java
    import java.awt.*;import javax.swing.*;
    import java.awt.BorderLayout;
    import java.awt.Rectangle;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    public class A extends JFrame
    {
        private BorderLayout borderLayout1=new BorderLayout();
        private JPanel jPanel1=new JPanel();
        private CardLayout cardLayout1=new CardLayout();
        private JPanel jPanel2=new JPanel();
        private JPanel jPanel3=new JPanel();
        private JButton A按钮=new JButton();
        private JButton B按钮=new JButton();
        public A ()
        {
    try
    {
        jbInit();
    }
    catch(Exception exception)
    {
        exception.printStackTrace();
    }
        }    private void jbInit ()
      throws Exception
        {
            this.setBounds(300,200,400,300);
    getContentPane().setLayout(borderLayout1);
    jPanel2.setLayout(null);
    jPanel3.setLayout(null);
    A按钮.setBounds(new Rectangle(33, 121, 115, 37));
    A按钮.setText("按钮A");
    A按钮.addActionListener(new ActionListener()
    {
        public void actionPerformed (ActionEvent e)
        {
    A按钮_actionPerformed(e);
        }
    });
    B按钮.setBounds(new Rectangle(227, 129, 136, 42));
    B按钮.setText("按钮B");
    B按钮.addActionListener(new ActionListener()
    {
        public void actionPerformed (ActionEvent e)
        {
    B按钮_actionPerformed(e);
        }
    });
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
            jPanel2.add(A按钮);
    jPanel1.add(jPanel2, "jPanel2");
            jPanel3.add(B按钮);
    jPanel1.add(jPanel3, "jPanel3");
            jPanel1.setLayout(cardLayout1);
    this.setVisible(true);    }    public static void main (String[] args)
        {
    A a=new A();
        }    public void A按钮_actionPerformed (ActionEvent e)
        {
            this.cardLayout1.next(this.jPanel1);
        }    public void B按钮_actionPerformed (ActionEvent e)
        {
            C c=new C(this);
        }    public void next()
        {
            this.cardLayout1.next(this.jPanel1);
        }
    }
      

  5.   

    //C.java
    import java.awt.*;
    import javax.swing.*;
    import java.awt.BorderLayout;
    import java.awt.Rectangle;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    public class C extends JFrame
    {
        private A a=null;
        private JButton jButton1=new JButton();    public C (A a)
        {
            this.a=a;
    try
    {
        jbInit();
    }
    catch(Exception exception)
    {
        exception.printStackTrace();
    }
            this.setVisible(true);
        }    private void jbInit ()
      throws Exception
        {
            this.setBounds(100,50,800,600);
    getContentPane().setLayout(null);
    jButton1.setBounds(new Rectangle(50, 111, 287, 44));
    jButton1.setText("点击这里完成C的逻辑");
    jButton1.addActionListener(new ActionListener()
    {
        public void actionPerformed (ActionEvent e)
        {
    jButton1_actionPerformed(e);
        }
    });
    this.getContentPane().add(jButton1, null);
        }    public void C的逻辑()
        {
            //这里执行C的逻辑
            this.setVisible(false);
            a.next();
        }    public void jButton1_actionPerformed (ActionEvent e)
        {
            C的逻辑();
        }
    }