Java - 在容器中显示多个画布
Java - Show multiple canvases in container
我是 Java 的新手。我想在一个容器对象中显示多个 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 class 只是绘制一条从 (0,0) 到传递的坐标的线。它适用于第一个 MyCanvas 实例。但是,如果我添加更多实例,则只会显示第一个 MyCanvas 对象。谁能告诉我为什么会这样,以及如何处理它?
谢谢!
未设置容器布局。按喜欢设置布局:
container.setLayout(new GridLayout(1,2));
我是 Java 的新手。我想在一个容器对象中显示多个 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 class 只是绘制一条从 (0,0) 到传递的坐标的线。它适用于第一个 MyCanvas 实例。但是,如果我添加更多实例,则只会显示第一个 MyCanvas 对象。谁能告诉我为什么会这样,以及如何处理它?
谢谢!
未设置容器布局。按喜欢设置布局:
container.setLayout(new GridLayout(1,2));