小弟刚开始学java,想用CardLayout布局添加两块面板,并且在两块面板上各自显示一条直线
以下是我写的代码,怎么调都不出来:麻烦帮我看看,先谢了:)
import java.awt.*;
import java.awt.event.*;//画一条线
class PanelLine1 extends Panel{
public void paint(Graphics g){
g.drawLine(50,50,200,200);
}
}//画另一条线
class PanelLine2 extends Panel{
public void paint(Graphics g){
g.drawLine(100,100,200,100);
}
}//窗体
class CardFrame extends Frame{
Button btnOne;
Button btnTwo;

Panel panNorth;
Panel panCenter;

Panel panOne;
Panel panTwo;

CardLayout cl;
Graphics g;
//构造方法
public CardFrame(){
panNorth = new Panel();
panCenter = new Panel();
btnOne = new Button("One");
btnTwo = new Button("Two");


setLayout(new BorderLayout());
add(panNorth,BorderLayout.NORTH);
add(panCenter,BorderLayout.CENTER);
panNorth.add(btnOne);
panNorth.add(btnTwo);

cl = new CardLayout();
panOne = new Panel();
panTwo = new Panel();

//实例化画线条的面板
PanelLine1 pl1 = new PanelLine1();
PanelLine2 pl2 = new PanelLine2();
panOne.add(pl1);
panTwo.add(pl1); panCenter.setLayout(cl);
panCenter.add("hong",panOne);
panCenter.add("lan",panTwo);

//注册监听
btnOne.addActionListener(new MyActionEvent());
btnTwo.addActionListener(new MyActionEvent());

}

//内部监听类
private class MyActionEvent implements ActionListener{
public void actionPerformed(ActionEvent ae){
if(ae.getActionCommand() == "One"){
cl.show(panCenter,"hong");
}
if(ae.getActionCommand() == "Two"){
cl.show(panCenter,"lan");
}
}
}

}
class Test {
public static void main(String[] args){
CardFrame cf= new CardFrame();
cf.setSize(200,300);
cf.setVisible(true);
}}

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;//画一条线
    class PanelLine1 extends Panel{
    public void paint(Graphics g){
    g.drawLine(50,50,200,200);
    }
    }//画另一条线
    class PanelLine2 extends Panel{
    public void paint(Graphics g){
    g.drawLine(100,100,200,100);
    }
    }//窗体
    class CardFrame extends Frame{
    Button btnOne;
    Button btnTwo;

    Panel panNorth;
    Panel panCenter;

    CardLayout cl;
    Graphics g;
    //构造方法
    public CardFrame(){
    panNorth = new Panel();
    panCenter = new Panel();
    btnOne = new Button("One");
    btnTwo = new Button("Two");


    setLayout(new BorderLayout());
    add(panNorth,BorderLayout.NORTH);
    add(panCenter,BorderLayout.CENTER);
    panNorth.add(btnOne);
    panNorth.add(btnTwo);

    cl = new CardLayout();

    //实例化画线条的面板
    PanelLine1 pl1 = new PanelLine1();
    PanelLine2 pl2 = new PanelLine2(); panCenter.setLayout(cl);
    panCenter.add("hong",pl1);
    panCenter.add("lan",pl2);

    //注册监听
    btnOne.addActionListener(new MyActionEvent());
    btnTwo.addActionListener(new MyActionEvent());

    }

    //内部监听类
    private class MyActionEvent implements ActionListener{
    public void actionPerformed(ActionEvent ae){
    if(ae.getActionCommand() == "One"){
    cl.show(panCenter,"hong");
    }
    if(ae.getActionCommand() == "Two"){
    cl.show(panCenter,"lan");
    }
    }
    }

    }
    class Test {
    public static void main(String[] args){
    CardFrame cf= new CardFrame();
    cf.setSize(200,300);
    cf.setVisible(true);
    }}