使用CardLayout从另一个类文件更改面板?

时间:2012-11-27 19:49:24

标签: java eclipse class jframe jpanel

遗憾的是,我在使用CardLayout时遇到了麻烦。我想为每张“卡”使用单独的类,然后使用卡内的按钮来更改显示的卡。

我想我知道什么是错的,虽然不是为什么,目前我从其他类调用createAndShowGUI()方法,所以我可以得到switch语句,但这似乎刷新了切换之前的所有代码。我不知道为什么这是一个问题但是cardLayout.next(contentpane)在第一次运行时在switch语句中运行得非常好,但是当我从另一个类的ActionListener调用它时它就死了:

import java.awt.CardLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Bond extends JFrame{
    public static String Panel = "PROFILE";
    public static int PaneNo = 1;
    static int i = 0;
    static Profile callProfile = new Profile();
    static Profileset callProfileset = new Profileset();

    public static void main(String args[]){
        createAndShowGUI();
    }

    public static void createAndShowGUI(){
        final JPanel contentPane = new JPanel();
        if(0 == i++){       
            final JFrame frame = new JFrame("FaceTweet+");
            frame.add(contentPane);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(686,242);
            frame.setResizable(false);
            frame.setVisible(true);
        }

        contentPane.setLayout(new CardLayout());
        Profile JPprofile = new Profile();
        Profileset JPprofileset = new Profileset();
        contentPane.add(JPprofile, "JPprofile");
        contentPane.add(JPprofileset, "JPprofileset");
        CardLayout cardLayout = (CardLayout) contentPane.getLayout();

        switch(Panel){
            case "HOMEPAGE": break;
            case "PROFILE":
                cardLayout.first(contentPane);
                PaneNo = 1;
                while(PaneNo != 1){
                    cardLayout.next(contentPane);
                    System.out.println("1");
                    PaneNo++;}
                break;
            case "PROFILESET":
                cardLayout.first(contentPane);
                PaneNo = 1;
                while(PaneNo != 2){
                    cardLayout.next(contentPane);
                    System.out.println("2");
                    PaneNo++;}
                break;
            default:
                cardLayout.show(contentPane, "JPprofile");
                break;
        }
    }

    public static void exit(int status){
        System.exit(status);
    }
}

System.out.println()只是告诉我代码是否通过switch语句然后通过正确的大小写,并且它每次都会执行,但是在按下按钮之后它永远不会执行cardLayout.next(contentpane)要么是Profileset的类Profile。 我希望这是足够的信息,如果你还需要更多信息,我会尝试用所要求的东西更新这个!谢谢!

0 个答案:

没有答案