Java - 在容器中显示多个 Canvas

标签 java canvas containers

我是 Java 的新手。我想在一个 Container 对象中显示多个 Canvas 对象。我不想使用 Swing 组件。这是我的代码:

//===============================================================================================|
package main;
//===============================================================================================|
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//===============================================================================================|
public class Main {
    //-------------------------------------------------------------------------------------------+
    public Main() {
        // Create a window to draw into:
        Frame window = new Frame();
        window.addWindowListener(new WindowAdapter() {
            public void windowClosing (WindowEvent we) {
                System.exit(0);
            }
        });
        window.setSize(600,400);
        window.setVisible(true);
        //
        // Create a container for the MyCanvas instances:
        Container container = new Container();
        container.setSize(600,400);
        container.setVisible(true);
        window.add(container);
        //
        // Create 2 MyCanvas instances and add them to the container:
        // Only the first one is showing.
        MyCanvas canvas1 = new MyCanvas(75, 75);
        container.add(canvas1);
        MyCanvas canvas2 = new MyCanvas(135, 300);
        container.add(canvas2);
    }
    //-------------------------------------------------------------------------------------------+
    public static void main(String[] args) {
        Main app = new Main();
    }   
//===============================================================================================|  
    public class MyCanvas extends Canvas {

        int x2;
        int y2;

        public MyCanvas (int x2, int y2) {
            this.setSize(600,400);
            this.x2 = x2;
            this.y2 = y2;
        }

        public void paint (Graphics g) {
            g.drawLine(0, 0, this.x2, this.y2);
        }
    }
//===============================================================================================|
}
//===============================================================================================|

Mycanvas 类只是绘制一条从 (0,0) 到传递的坐标的线。它适用于第一个 MyCanvas 实例。但是,如果我添加更多实例,则只会显示第一个 MyCanvas 对象。任何人都可以告诉我为什么会这样,该怎么办?

谢谢!

最佳答案

未设置容器布局。像这样设置布局:

container.setLayout(new GridLayout(1,2));

关于Java - 在容器中显示多个 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30680211/

相关文章:

javascript - 等距拓扑排序问题

docker compose 孤儿容器警告

java - 如何使绘图默认移动,独立于 MouseEvent?

java - JUnit 是否支持用于测试的属性文件?

javascript - 如何仅更改特定图像一次

canvas - Webkit canvas drawImage() 和 canvas 非整数比例因子错误?

c++ - 无需键入整个容器定义即可引用迭代器的类型名称的有效方法?

node.js - Ubuntu docker 容器上的 NodeJs?

java - 我可以在 Applet 中使用 vlcj 库吗?

java - 当有人重写抽象方法时,我可以强制保护它们吗?