一个类extends JDialog
container c=getContentPane();
c.add(JPanel1);  开始加载是JPanel1的内容JPanel1内有一个下一步的按钮
点击下一步就显示JPnael2的内容我在下一步的单击监听事件里
remove(JPanel1);
add(JPanel2);可是没有反应,是不是应该更新JDIALOG 具体怎么做不知道或者是用隐藏的方式实现 下一步 上一步的操作JAVA图形开发的小白求指教

解决方案 »

  1.   

    因为你添加JPanel到Container所以,你应该c.remove(Jpanel1),c.add(Jpanel2),c.updateUI();应该是这样的
      

  2.   


    c.updateUI();  这个没有啊 
    只有c.update();可是要带参 运行效果也不对package jframe_test;import java.awt.Component;
    import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    public class Jdialog extends JDialog{
    private Container c;
    public Jdialog(){
    c=getContentPane();
    c.add(jpanel1());
    setLocationRelativeTo(null);
    setSize(240, 150);
    setVisible(true);
    }

    private JPanel jpanel1() {
    JPanel pa=new JPanel();
    JLabel lbl=new JLabel("1111");
    JButton jb=new JButton("d");
    jb.addActionListener(new jbActionL());
    pa.add(lbl);
    pa.add(jb);
    return pa;
    }
    class jbActionL implements ActionListener{ @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    c.remove(jpanel1());
    c.add(jpanel2());
    c.update(getGraphics());
    }

    }
    private JPanel jpanel2() {
    JPanel pa=new JPanel();
    JLabel lbl=new JLabel("22222");
    JButton jb=new JButton("d");
    pa.add(lbl);
    pa.add(jb);
    return pa;
    } public static void main(String[] args) {
    // TODO Auto-generated method stub
    new Jdialog();
    }}
      

  3.   

    c.remove(jpanel1());
    c.add(jpanel2());JPanel1的实例名是pa,remove的时候应该remove pa,即:c.remove(pa);  jpanel1()是一个方法的名称,在一个组件里remove 一个方法应该不可能吧