如题,我想做个向导形式的窗口,有前进后退的按钮,但是我发现程序不会等我按过按钮才接着往下走..请问应该怎么办?

解决方案 »

  1.   

    这个有很多方法,我这里说一种,设置一个变量state,用来表示你的程序现在运行到哪个部分,点下一步,那么就state++,然后根据state的值执行一部分代码,点上一步,就state--,然后根据state的值执行一部分代码。
    我举个简单的例子。
    import java.awt.* ;
    import javax.swing.* ;
    import java.awt.event.* ;public class Test extends JFrame{

    private JButton b_next = null ;
    private JButton b_prv = null ;

    private int state = 0 ;
    private JLabel display = null ;
    public Test{

    //set frame
    this.setSize(300 , 400) ;
    this.setLocation(200 , 200) ;

    //components
    b_next = new JButton("下一步") ;
    b_prv = new JButton("上一步") ;

    b_next.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
    state++ ;

    excuteState(state) ;
    }
    }) ;

    b_prv.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
    state-- ;

    excuteState(state) ;
    }
    }) ;

    display = new JLabel("这里显示后台程序运行的进度") ;

    //button panel 
    JPanel p_button = new JPanel() ;
    p_button.setLayout(new GridLayout(1 , 2)) ;

    p_button.add(b_prv) ;
    p_button.add(b_next) ;

    //add
    this.setLayout(new BorderLayout()) ;

    this.add(display , BorderLayout.CENTER) ;
    this.add(p_button , BorderLayout.SOUTH) ;

    }

    public static void main(String args[]){
    new Test().setVisible(true) ;
    }

    public void excuteState(int state){
    switch (state) {

         case 1: 
         display.setText("程序运行第一部分") ;
         break;
         case 2:
         display.setText("程序运行第二部分") ;
         break;
         case 3:
         display.setText("程序运行第三部分") ;
         break;
         case 4:
         display.setText("程序运行第四部分") ;
         break;
         case 5:
         display.setText("程序运行第五部分") ;
         break;
         default :
         display.setText("程序运行了未知部分") ;
         return ;
        }
    }
    }
      

  2.   

    太谢谢了!我没想过把switch放到一个单独的方法里,呵呵..
      

  3.   

    太谢谢了!我没想过把switch放到一个单独的方法里,呵呵..