程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

JPanel、BorderLayout 工作不正常

发布于2023-03-30 18:46     阅读(730)     评论(0)     点赞(3)     收藏(2)


好吧,idc 我做了什么,但现在每次我启动程序时,我的屏幕都会分成右侧和左侧,我希望它们合并并将红色放在屏幕的东侧,就像.. 分成 2面板 .. 我正在尝试为我的 lwjgl 游戏制作一个世界编辑器,我想制作一个面板,将我的游戏渲染到带有红色屏幕的区域,但我无法将它放在正确的位置这里是一张照片- http://prntscr.com/85o1es 因为某种原因你可以看到那里有 2 个屏幕,我将面板涂成灰色,你可以看到面板只在右侧......显示的渲染是精美的红色背景和黑色正方形模型如果有人知道为什么我的屏幕分裂请帮忙。

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

你为什么将位置设置为BorderLayout.EAST?。将其设置为 center 。

您在左侧看到的拆分面板是您的 jframe 。因为您已将 border-layout constrain 设置为 east 您的面板位于右侧。如果你不确定放

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

你会看到它是框架。


编辑.......

根据您的意见,您希望将画布放置在右下角

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

 frame.add(panel,BorderLayout.EAST);

将面板布局设置为border layout

panel.setLayout(new BorderLayout());

并在面板的南边添加画布

panel.add(glCanvas,BorderLayout.SOUTH);


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/666421/2e33258d4031a60e6adf/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

3 0
收藏该文
已收藏

评论内容:(最多支持255个字符)