我想实现这样的效果:
一个jPanel用cardlayout控制panel1到panelN;
另有一个buttonPanel含两个按钮“上一步”和“下一步”;
我想在显示panel1的时候不显示“上一步”按钮,显示panelN的时候不显示“下一步”按钮。
我试了很多种方法都没有用,到底该如何实现?

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;public class CardLayoutDemo extends JFrame{

    private CardLayout card = new CardLayout();

    private JButton btnPrev = new JButton("<<");
    private JButton btnNext = new JButton(">>");

    private JPanel cPane = new JPanel(card);
    private JPanel sPane = new JPanel();

    private JPanel pane1 = new JPanel();
    private JPanel pane2 = new JPanel();
    private JPanel pane3 = new JPanel();
    private JPanel pane4 = new JPanel();

    private static int temp = 1;

    public CardLayoutDemo(){
    createUI();
    addListener();

    }
    private void createUI(){

    this.getContentPane();
    this.add("Center",cPane);
    pane1.setBackground(Color.BLUE);
    pane1.add(new JLabel("&micro;&Uacute;&Ograve;&raquo;&iquest;é&Atilde;&aelig;°&aelig;"));
    pane2.setBackground(Color.RED);
    pane2.add(new JLabel("&micro;&Uacute;&para;&thorn;&iquest;é&Atilde;&aelig;°&aelig;"));
    pane3.setBackground(Color.YELLOW);
    pane3.add(new JLabel("&micro;&Uacute;&Egrave;&yacute;&iquest;é&Atilde;&aelig;°&aelig;"));
    pane4.setBackground(Color.GREEN);
    pane4.add(new JLabel("&micro;&Uacute;&Euml;&Auml;&iquest;é&Atilde;&aelig;°&aelig;"));
    cPane.add("1",pane1);
    cPane.add("2",pane2);
    cPane.add("3",pane3);
    cPane.add("4",pane4);

    this.add("South",sPane);
    sPane.add(btnPrev);
    btnPrev.setEnabled(false);
    sPane.add(btnNext);

    this.setSize(300,200);
    this.setLocation(200,200);
    }
    private void addListener(){
    btnPrev.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent ae){
    card.previous(cPane);
    temp--;
    if(temp != 1){

    btnNext.setEnabled(true);
    }else{
    btnPrev.setEnabled(false);
    }
    }
    });
    btnNext.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent ae){
    card.next(cPane);
    temp++;
    if(temp != 4){
    btnPrev.setEnabled(true);
    }else{
    btnNext.setEnabled(false);
    }
    }
    });
    }
    public static void main(String args[]){
    new CardLayoutDemo().setVisible(true);
    }
    }是这样吗?