JPanel,BorderLayout工作错误

时间:2015-08-17 15:28:42

标签: java swing jpanel render jlabel

嗯idc我做了什么,但现在每次我启动程序我的屏幕只分成右侧和左侧,我希望它们合并,只是把红色放在屏幕的东侧,它就像..分为2个面板.. 我试图为我的lwjgl游戏制作一个世界编辑器,我想制作一个面板,在我的游戏区域上显示红色屏幕,但我不能把它放在正确的位置 这是一张图片 - http://prntscr.com/85o1es 你可以看到因为某种原因有2个屏幕,我将面板涂成灰色,你可以看到面板只在右侧...显示的渲染很好,红色背景和黑色模型广场 如果有人知道为什么我的屏幕分裂PLZ帮助。

public class Panel
{

    private static JFrame frame;
    private static JPanel panel;
    private static Canvas glCanvas = new Canvas();
    private JMenuBar mb = new JMenuBar();
    private static Loader loader;
    private static Renderer renderer;


    public static void gui()
    {
        panel = new JPanel();
        frame = new JFrame("TEST");
        frame.setVisible(true);
        frame.setSize(1280, 1024);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        panel.setBackground(Color.GRAY);
        frame.add(panel,BorderLayout.EAST);
    }

    public static void main(String[] args)
    {
        gui();
        setCanvas();
        DisplayManager.createDisplay();
        loader = new Loader();
        renderer = new Renderer();

        float[] vertices =
        { -0.5f, 0.5f, 0f, -0.5f, -0.5f, 0f, 0.5f, -0.5f, 0f,

        0.5f, -0.5f, 0f, 0.5f, 0.5f, 0f, -0.5f, 0.5f, 0f };

        RawModel model = loader.loadToVAO(vertices);

        while (!Display.isCloseRequested())
        {
            renderer.prepare();
            renderer.render(model);
            DisplayManager.updateDisplay();
        }

        DisplayManager.closeDisplay();

    }

    private static void setCanvas()
    {
        glCanvas.setIgnoreRepaint(true);
        glCanvas.setSize(720, 480);
        panel.add(glCanvas);
        try
        {
            Display.setParent(glCanvas);
        }
        catch (LWJGLException e)
        {
            e.printStackTrace();
        }
    }

}

1 个答案:

答案 0 :(得分:1)

将此更改为

 frame.add(panel,BorderLayout.EAST);

frame.add(panel,BorderLayout.CENTER);

你为什么要将职位设定为BorderLayout.EAST?把它设置为中心。

你在左侧看到的分割面板就是你的jframe。因为你已经将border-layout约束设置为东,你的面板位于右侧。 如果你不确定

frame.getContentPane().setBackground(Color.green);

你会看到它是框架。

<小时/> 编辑.......

根据您的评论,您希望将画布放在右下角

所以 像你已经完成的那样将面板添加到东方

 frame.add(panel,BorderLayout.EAST);

将面板布局设置为border layout

panel.setLayout(new BorderLayout());

并将画布添加到面板的南面

panel.add(glCanvas,BorderLayout.SOUTH);