java的卡片布局

Python013

java的卡片布局,第1张

JFrame

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方法,来切换