首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何管理我的图层?

如何管理我的图层?
EN

Stack Overflow用户
提问于 2014-01-28 04:50:12
回答 1查看 111关注 0票数 1

因此,我试图把我的面板在不同的层次,但它不工作,我做错了什么?如何管理这些层?我想让table回到原点,panel在中间,然后wkp放在最上面。提前谢谢。

代码语言:javascript
复制
public class Main  {
    private static JFrame frame = new MyFrame();
    private static WhiteKingPanel wkp = new WhiteKingPanel();
    private static MyPanel panel = new MyPanel();
    private static TablePanel table = new TablePanel();
    private static JLayeredPane lpane = new JLayeredPane();

public static void main(String[] args) throws InterruptedException{

    EventQueue.invokeLater(new Runnable(){
        public void run(){
             frame.setLayout(new BorderLayout());
                 frame.add(lpane, BorderLayout.CENTER); 
                 wkp.setOpaque(true);
                 wkp.setBounds(0, 0, 50, 50);
                 lpane.add(wkp, new Integer(3), 0);
                 lpane.add(panel, new Integer(2), 0);
                 lpane.add(table, new Integer(1), 0);
                 table.setOpaque(true);
             frame.setTitle("ImageTest");
             frame.setBackground(Color.BLACK);
             frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
             frame.setBounds(150, 100, 512, 512);
             frame.add(wkp);
             frame.add(table);
                         frame.pack();
             frame.setVisible(true);
             WindowListener listener = new Terminator();
             frame.addWindowListener(listener);

        }

    });

    }


}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-28 05:06:24

关于JLayerPane,您需要为添加的所有组件设置边界。

代码语言:javascript
复制
            wkp.setBounds(0, 0, 100, 100);
            panel.setBounds(50, 50, 100, 100);
            table.setBounds(100, 100, 100, 100);

还将JLayerPane设置为内容窗格。

代码语言:javascript
复制
            frame.setContentPane(lpane);
            //frame.add(wkp);             No need to add these to the frame
            //frame.add(table);
            //frame.add(lpane);

代码语言:javascript
复制
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;

public class Main {

    private static JFrame frame = new MyFrame();
    private static JPanel wkp = new JPanel();
    private static JPanel panel = new JPanel();
    private static JPanel table = new JPanel();
    private static JLayeredPane lpane = new JLayeredPane();

    public static void main(String[] args) throws InterruptedException {

        EventQueue.invokeLater(new Runnable() {
            public void run() {

                wkp.setBackground(Color.YELLOW);
                panel.setBackground(Color.GREEN);
                table.setBackground(Color.BLUE);

                frame.setLayout(new BorderLayout());
                frame.add(lpane, BorderLayout.CENTER);
                wkp.setOpaque(true);
                table.setOpaque(true);
                panel.setOpaque(true);
                lpane.add(wkp, new Integer(3), 0);
                lpane.add(panel, new Integer(2), 0);
                lpane.add(table, new Integer(1), 0);
                wkp.setBounds(0, 0, 100, 100);
                panel.setBounds(50, 50, 100, 100);
                table.setBounds(100, 100, 100, 100);
                frame.setTitle("ImageTest");
                frame.setBackground(Color.BLACK);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setContentPane(lpane);
                //frame.add(wkp);
                //frame.add(table);
                //frame.add(lpane);
                frame.pack();
                frame.setVisible(true);

            }
        });
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21397067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档