首页 > 解决方案 > Java - 一个 JFrame 中的多个画布

问题描述

我想在一个窗口中放置两个绘图板(一个用于游戏,另一个用于小地图)。到目前为止,我可以将一个 Canvas 直接添加到 JFrame 并在其上绘画。

我坚持添加另一个画布。我尝试将 LayoutManager 添加到框架并将这些添加到画布到特定位置但没有成功。也像这里一样使用 JPanel 和 LayoutManager:How to display two canvas in a JFrame java 但它对我不起作用,我得到空窗口。

老实说,使用 JPanel 向 JFrame 添加一个 Canvas 也不起作用(再次获得空窗口)所以我怀疑这里有一些错误,但我不知道那可能是什么。

package display;

import java.awt.*;
import javax.swing.*;

@SuppressWarnings("serial")
public class MainWindow extends JFrame
{
    Menu myMenu;
    SpaceMap mySpaceMap;
    JPanel generalPanel;

    public MainWindow()
    {
        myMenu = new Menu();
        mySpaceMap = new SpaceMap();
        generalPanel = new JPanel();
        generalPanel.setLayout(new FlowLayout());

        this.getContentPane().add(generalPanel);
        generalPanel.add(myMenu);
        generalPanel.add(mySpaceMap);

        this.setSize(500,500);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setTitle("Title");
        this.setLayout(new BorderLayout());

        this.setVisible(true);
    }

}

Menu 和 SpaceMap 是这样定义的(现在 Menu 有黄色填充,而 SpaceMap 有黑色):

package display;

import java.awt.*;

@SuppressWarnings("serial")
public class SpaceMap extends Canvas
{   
    public void paint(Graphics g)
    {
        setSize(200,200);
        g.setColor(Color.BLACK);
        g.fillRect(0,0,getWidth(),getHeight());
    }
}

我的 Java 版本是 14。

我想它们的大小之间的比例必须定义为每个大小之间的比例。一般来说,我想实现这样的目标:

+------------------------+
|                |       |
|                |       |
|  Canvas1       |Canvas2|
|                |       |
|                |       |
+------------------------+

标签: javaswingcanvasjframesplitview

解决方案


推荐阅读