Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java CardLayout方法show()在awt中不起作用_Java_Layout_Awt - Fatal编程技术网

Java CardLayout方法show()在awt中不起作用

Java CardLayout方法show()在awt中不起作用,java,layout,awt,Java,Layout,Awt,我正在尝试运行CardLayout,但不知道为什么CardLayout的show()不起作用。我犯了一个错误 package java_files; import java.awt.*; import java.awt.event.*; //import javax.swing.JButton; public class AwtLayoutExample { public static void main(String args[]) { Frame f=new

我正在尝试运行
CardLayout
,但不知道为什么
CardLayout
show()
不起作用。我犯了一个错误

package java_files;

import java.awt.*;
import java.awt.event.*;

//import javax.swing.JButton;

public class AwtLayoutExample  {
   public static void main(String args[])
   {
      Frame f=new Frame("Card Layout");
      f.setSize(400,400);
      f.setVisible(true);
      f.addWindowListener(new WindowAdapter(){
          public void windowClosing(WindowEvent e){
              System.exit(0);
          }
      });
      CardLayout card=new CardLayout();
      f.setLayout(card);
      Panel panelCont=new Panel();
      Panel panelFirst=new Panel();
      Panel panelSecond=new Panel();
      Button b1=new Button("Switch to 2nd Panel");
      Button b2=new Button("Switch to 1st Panel");
      panelFirst.add(b1);

      panelSecond.add(b2);
      panelFirst.setBackground(Color.CYAN);
      panelSecond.setBackground(Color.GREEN);
      panelCont.add(panelFirst,"1");
      panelCont.add(panelSecond, "2");
      card.show(panelCont, "1");      
      b1.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
      card.show(panelCont, "2");
      }
      });
      b2.addActionListener(new ActionListener(){
          public void actionPerformed(ActionEvent e){
              card.show(panelCont, "2");
          }
      });
      f.add(panelCont);
      f.pack();
      f.setVisible(true);
   }
}   
我只是得到一个空白帧,当我运行它与此错误

Exception in thread "main" java.lang.IllegalArgumentException: wrong parent for CardLayout
    at java.awt.CardLayout.checkLayout(Unknown Source)
    at java.awt.CardLayout.show(Unknown Source)
    at java_files.AwtLayoutExample.main(AwtLayoutExample.java:33)

您可以将CardLayout应用于面板,然后将其他面板添加到此面板

Panel panelCont=new Panel(new CardLayout());
panelCont.add("one", panelOne);
panelCont.add("two", panelTwo);
panelCont.add("three", panelThree);
演出时,您可以这样做:

((CardLayout) panelCont.getLayout()).show(panelCont, "two");

CardLayout
应用于
框架
,但使用
panelCont
作为要切换的容器。看一看。另外,大约16年前AWTAPI就被Swing取代了,您将获得对Swing和JavaFX的更好支持,然后您将获得对AWTThanks的更好支持。但我认为这是因为awt有点复杂。使用Swing更简单。CardLayout在两者中都是一样的,但我建议您使用Swing,它会更好