Java 如何使用“添加元素”;“绝对位置”;在jframe上?

Java 如何使用“添加元素”;“绝对位置”;在jframe上?,java,swing,canvas,absolute,jlayeredpane,Java,Swing,Canvas,Absolute,Jlayeredpane,实际上这是我的代码: private void createDisplay(){ frame = new JFrame(title); frame.setSize(width, height); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setResizable(false); frame.setUndecorated(true); frame.setLocationRe

实际上这是我的代码:

private void createDisplay(){
    frame = new JFrame(title);
    frame.setSize(width, height);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(false);
    frame.setUndecorated(true);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);

    canvas = new Canvas();
    canvas.setPreferredSize(new Dimension(width, height));
    canvas.setMaximumSize(new Dimension(width, height));
    canvas.setMinimumSize(new Dimension(width, height));
    canvas.setFocusable(false);

    frame.add(canvas);
    frame.pack();
}
在我的屏幕上显示我的游戏(游戏在画布上绘制)。
我需要在屏幕前面添加一些其他元素,例如JButtons。

我试过这样的“JLayeredPane”:

    private void createDisplay(){
    frame = new JFrame(title);
    frame.setSize(width, height);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(false);
    frame.setUndecorated(true);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);

    layeredPane = new JLayeredPane();
    layeredPane.setPreferredSize(new Dimension(width, height));
    //layeredPane.addMouseMotionListener((MouseMotionListener) this);
    frame.add(layeredPane);

    canvas = new Canvas();
    canvas.setPreferredSize(new Dimension(width, height));
    canvas.setMaximumSize(new Dimension(width, height));
    canvas.setMinimumSize(new Dimension(width, height));
    canvas.setFocusable(false);

    layeredPane.add(canvas,new Integer(10));
    frame.pack();
}
但是当我启动程序时,我看不到画布,只看到layeredPane://
好主意?谢谢大家。


PS:如果你有其他解决方案,我很好,我只需要保留我的JPanel。

移动
frame.setVisible(true);
到最后一行(在
frame.pack
之后)同样,这不会像你认为的那样工作,
Canvas
是一个很重的组件,不会很好地玩Swing(很轻)容器,因为它有z-排序问题…哦,当您使用诸如
BufferStrategy
Thx之类的活动渲染技术时,Swing不能很好地发挥作用,但不起作用:/Ok为了避免这种情况,您有没有办法解决我的问题?要在屏幕前面的画布上放置一个JButton?我可以假设
canvas
java.aw吗如果不是,请考虑提供一个演示你的问题的代码。这不是一个代码转储,而是你正在做的一个例子,它突出了你所面临的问题。这将导致更少的混乱和更好的响应。否则你就有点麻烦了,你需要实现你自己的“按钮”。