如何在单个JFrame内切换JLayeredPane?

时间:2016-04-10 08:29:28

标签: java swing jlayeredpane

我有一个像

这样的JFrame扩展类
public class MyClass extends JFrame implements ActionListener {}

在这里,我有3个JLayeredPane喜欢;

JLayeredPane layera = new JLayeredPane();
JLayeredPane layera = new JLayeredPane();
JLayeredPane layera = new JLayeredPane();

我有一个构造函数,我在其中添加组件,如;

MyClass(){
    layera.add(buttona);
    layerb.add(buttonb);
    layerc.add(buttonc)
}

所有图层都具有相同的父JFrame高度和宽度,以便填充框架并完全遮盖其他图层。

我将所有图层一次添加到框架中。将有一个带按钮的最顶层(layera),其他层位于该层下方,对用户不可见。当用户单击该层中的按钮时,应该向用户显示包含按钮的layerb(隐藏layera和buttona)。当用户点击该按钮时,他应该获得layerc和buttonc。再次,如果用户点击它,他应该得到layera和buttona。

我已将所有图层设置为不透明,以便隐藏其他图层。

整个代码可能看起来像;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MyClass extends JFrame implements ActionListener {

    JLayeredPane layera = new JLayeredPane();
    JLayeredPane layerb = new JLayeredPane();
    JLayeredPane layerc = new JLayeredPane();

    JButton buttona = new JButton("buttona");
    JButton buttonb = new JButton("buttonb");
    JButton buttonc = new JButton("buttonc");

    MyClass(){

        layera.setBounds(0,0,100,100);
        layerb.setBounds(0,0,100,100);
        layerc.setBounds(0,0,100,100);

        buttona.setBounds(30,30,40,30);
        buttonb.setBounds(30,30,40,30);
        buttonc.setBounds(30,30,40,30);

        layera.add(buttona);
        layerb.add(buttonb);
        layerc.add(buttonc);

        layera.setOpaque(true);
        layerb.setOpaque(true);
        layerc.setOpaque(true);

        add(layera);
        add(layerb);
        add(layerc);

        setSize(100,100);
        setLayout(null); 
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public void actionPerformed(ActionEvent e) {
        flag = 0;
        String name =  e.getActionCommand();

        if(name.equals("buttona")){         
            //show layerb           
        }else if(name.equals("buttonb")){
            //show layerc
        }else{
            //show layera
        }
    } 

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

}

我该怎么做?

0 个答案:

没有答案