遗憾的是,我在使用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。 我希望这是足够的信息,如果你还需要更多信息,我会尝试用所要求的东西更新这个!谢谢!