JPanel, BorderLayout工作错误



好吧,我所做的,但现在每次我启动程序,我的屏幕只是分成右侧和左侧,我想把它们合并,只是把红色在屏幕的东边,就像…分成2个面板…我试图为我的LWJGL游戏做一个世界编辑器,我想做一个面板,渲染我的游戏在红色屏幕上的区域,但我只是不能把它放在正确的地方这里有一张图片- http://prntscr.com/85o1es正如你所看到的,由于某种原因,那里有两个屏幕,我把面板涂成灰色,你可以看到面板只在右侧…显示器的渲染是精细的,红色背景和一个黑色正方形的模型如果有人知道为什么我的屏幕分裂,请帮助。

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();
        }
    }
}

把这个改成

 frame.add(panel,BorderLayout.EAST);

frame.add(panel,BorderLayout.CENTER);

为什么将position设置为BorderLayout.EAST ?设置为居中

你在左边看到的分割面板是你的jframe .因为你已经设置了border-layout约束到东边,你的面板已经定位在右边。如果你不确定,请输入

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

你会看到它是框架


编辑…

根据你的注释,你想把你的画布定位在右下角

将面板添加到East,就像你已经做的那样

 frame.add(panel,BorderLayout.EAST);

设置面板布局为border layout

panel.setLayout(new BorderLayout());

并在面板的南部添加画布

panel.add(glCanvas,BorderLayout.SOUTH);

相关内容

最新更新