java卡片布局中show的正确使用方法

创建了四个按钮,分别执行上一页、下一页及两个直接跳转指定页。previous和next都没问题,但是show却始终无效,求高手帮忙看下代码。importjava.awt.... 创建了四个按钮,分别执行上一页、下一页及两个直接跳转指定页。previous和next都没问题,但是show却始终无效,求高手帮忙看下代码。
import java.awt.*;
import java.awt.event.*;
public class Ceshi extends Frame
{
PanelF pf = new PanelF();
PanelS ps = new PanelS();
Panel panelMain,panelXZ;
Button btNext,btPrevious,bt1,bt2,bt3,bt4,bt5;
CardLayout cl;
Boolean w = false;
public Ceshi()
{

cl = new CardLayout();
panelMain = new Panel();//被设定为卡片布局的面板
panelXZ = new Panel();//构造放按钮的面板
btPrevious = new Button("上一页");
btNext = new Button("下一页");
bt1 = new Button("1");
bt2 = new Button("2");

//给定义为卡片布局的面板添加面板
panelMain.add(pf,"pf");
panelMain.add(ps,"ps");

panelXZ.add(btPrevious);
panelXZ.add(btNext);
panelXZ.add(bt1);
panelXZ.add(bt2);

btNext.addActionListener(new ActionListener(){//下一页的按钮
public void actionPerformed(ActionEvent e)
{
cl.next(panelMain);
}
});
bt2.addActionListener(new ActionListener(){//跳转到第二个面板的按钮
public void actionPerformed(ActionEvent e)
{
cl.show(panelMain, "ps");
}
});
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent wevent)
{
if(w)
dispose();
else
System.exit(0);
}
});
panelMain.setLayout(cl);
panelXZ.setLayout(new FlowLayout());
setTitle("主界面");
setSize(800, 600);
setLocation(500,250);
add(panelMain,BorderLayout.CENTER);//把设为卡片布局的面板放置在窗体中间
add(panelXZ,BorderLayout.SOUTH);//把带按钮的面板放置在底部
setVisible(true);
}
public static void main(String args[])
{
new Ceshi();
}
}
//第一个面板
class PanelF extends Panel
{
public PanelF()
{
add(new Label("第一个面板"));
}
}
//第二个面板
class PanelS extends Panel
{
public PanelS()
{
add(new Label("第二个面板"));
}
}
展开
 我来答
yugi111
2014-12-06 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.4亿
展开全部
已修改,复制粘贴即可,
panelMain = new Panel (cl);// 被设定为卡片布局的面板
修改如上即可


import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.CardLayout;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
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 Ceshi extends Frame
{
PanelF pf = new PanelF ();
PanelS ps = new PanelS ();
Panel panelMain, panelXZ;
Button btNext, btPrevious, bt1, bt2, bt3, bt4, bt5;
CardLayout cl;
Boolean w = false;

public Ceshi ()
{
cl = new CardLayout ();
panelMain = new Panel (cl);// 被设定为卡片布局的面板
panelXZ = new Panel ();// 构造放按钮的面板
btPrevious = new Button ("上一页");
btNext = new Button ("下一页");
bt1 = new Button ("1");
bt2 = new Button ("2");
// 给定义为卡片布局的面板添加面板
panelMain.add (pf, "pf");
panelMain.add (ps, "ps");
panelXZ.add (btPrevious);
panelXZ.add (btNext);
panelXZ.add (bt1);
panelXZ.add (bt2);
btPrevious.addActionListener (new ActionListener ()
{
@Override
public void actionPerformed ( ActionEvent e )
{
cl.previous (panelMain);
}
});
btNext.addActionListener (new ActionListener ()
{// 下一页的按钮
public void actionPerformed ( ActionEvent e )
{
cl.next (panelMain);
}
});
bt1.addActionListener (new ActionListener ()
{// 跳转到第二个面板的按钮
public void actionPerformed ( ActionEvent e )
{
cl.show (panelMain, "pf");
}
});
bt2.addActionListener (new ActionListener ()
{// 跳转到第二个面板的按钮
public void actionPerformed ( ActionEvent e )
{
cl.show (panelMain, "ps");
}
});
addWindowListener (new WindowAdapter ()
{
public void windowClosing ( WindowEvent wevent )
{
if (w)
dispose ();
else
System.exit (0);
}
});
panelXZ.setLayout (new FlowLayout ());
setTitle ("主界面");
setSize (800, 600);
setLocationRelativeTo (null);
add (panelMain, BorderLayout.CENTER);// 把设为卡片布局的面板放置在窗体中间
add (panelXZ, BorderLayout.SOUTH);// 把带按钮的面板放置在底部
setVisible (true);
}

public static void main ( String args[] )
{
new Ceshi ();
}
}

// 第一个面板
class PanelF extends Panel
{
public PanelF ()
{
add (new Label ("第一个面板"));
}
}

// 第二个面板
class PanelS extends Panel
{
public PanelS ()
{
add (new Label ("第二个面板"));
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式