j=new
JFrame()
j.getContentPane().add("West",“您组件所在的面板")//这里不用setLayout,默认已经是BorderLayout
或者是用j.getContentPane().setLayout(null)再setBounds(坐标,坐标,长,宽)比较灵活,但是比较麻烦
我看了你的程序,帮你改完了,你看看吧。import java.awt.BorderLayout
import java.awt.Button
import java.awt.CardLayout
import java.awt.Frame
import java.awt.Panel
import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import java.awt.event.WindowAdapter
import java.awt.event.WindowEvent
public class NewCardLayout {
public static void main (String[] args){
Frame f = new Frame ("example")
final Panel p=new Panel()
final CardLayout cl=new CardLayout()
p.setLayout(cl)
Panel p1=new Panel()
p1.setLayout(new BorderLayout())
Panel p2=new Panel()
p2.setLayout(new BorderLayout())
Button b1=new Button("one")
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
cl.show(p,"card2")
}
})
p1.add(b1,BorderLayout.CENTER)
Button b2=new Button("two")
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
cl.show(p,"card1")
}
})
p2.add(b2,BorderLayout.CENTER)
p.add(p1, "card1")
p.add(p2, "card2")
f.add(p)
f.setBounds(100,100,250,250)
f.setVisible(true)
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0)
}})
}
}
可以切换呢,但前提是,你首先要把你的卡片append到cardlayout中去,java.awt.CardLayout.addLayoutComponent(Component comp, Object constraints) 将指定的组件添加到此卡片布局的内部名称表。 这个方法有两个参数,第一个参数是你的容器,第二个参数,是为卡片起的名字,我一般用String,做好这一步后,再用show方法,来切换