CardLayout 方法 show() 在 awt 中不起作用
CardLayout method show() not working in 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 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,然后将其他 Panel 添加到此 Panel
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
但不知道为什么 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,然后将其他 Panel 添加到此 Panel
Panel panelCont=new Panel(new CardLayout());
panelCont.add("one", panelOne);
panelCont.add("two", panelTwo);
panelCont.add("three", panelThree);
演出时可以这样做:
((CardLayout) panelCont.getLayout()).show(panelCont, "two");