很遗憾,我在使用 CardLayout 时遇到了麻烦。我想为每个单独的“卡片”使用单独的类,然后使用卡片内的按钮来更改显示的卡片。
我想我知道出了什么问题,尽管不知道为什么,目前我正在从其他类调用 createAndShowGUI() 方法,这样我就可以获取 switch 语句,但这似乎刷新了 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) 从任一类 Profile 按下按钮后配置文件集。我希望这是足够的信息,如果您需要更多信息,请说,我会尝试使用所需的内容进行更新!谢谢!