gpt4 book ai didi

java - 调整 appletviewer 窗口大小时, Canvas 大小不会改变

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:16 29 4
gpt4 key购买 nike

对于我的 CS11 类(class),我必须编写一个小小程序,用于在屏幕上绘制一条在 Canvas 中间相交的水平线和垂直线。分配的一部分是当用户单击一行并执行拖动时能够移动一条或两条线。该部分正在工作。

第二部分涉及处理窗口大小调整。如果调整窗口大小,则需要调整两条线,以便它们从窗口的边缘延伸到窗口的边缘。

我们的说明希望我们使用 Java appletviewer 而不是 Web 浏览器来启动程序,以便在程序运行时可以调整窗口大小。我们被告知使用以下 .html 文件。

可调整大小的BallController.html

<html>
<body>
<applet
code="ResizableBallController.class"
archive="objectdraw.jar"
width="500"
height="500">
</applet>
</body>
</html>

当我运行程序并调整窗口大小时, Canvas 区域保持固定在 500x500 像素,即使我使窗口更大,并且放大的区域填充有灰色。根据我的导师的说法, Canvas 应该自动调整以从新调整大小的窗口的边缘延伸到边缘。

为了测试这个问题,我重载了 paint 方法来添加 System.out.println 消息,这样我就可以看到它被调用的频率,而且似乎唯一一次调用该方法的时间是在程序启动时。

我想知道这是否与 Awesome Window Manager 或其他东西有关。我这样说是因为老师说当你调整窗口大小时, Canvas 也应该自动调整大小。

这是代码的一部分,以便您可以看到我在做什么:

import objectdraw.*;
import java.awt.*;

public class ResizableBallController extends WindowController
{
// Canvas separators
private Line xAxis,
yAxis;

boolean xAxisGrabbed,
yAxisGrabbed;

public void begin()
{
int canvasWidth = canvas.getWidth(),
canvasHeight = canvas.getHeight(),
canvasHorizontalMidPoint = canvasWidth / 2,
canvasVerticalMidpoint = canvasHeight / 2;

xAxis = new Line(0, canvasVerticalMidpoint,
canvasWidth, canvasVerticalMidpoint,
canvas);

yAxis = new Line(canvasHorizontalMidPoint, 0,
canvasHorizontalMidPoint, canvasHeight,
canvas);
}

public void onMousePress(Location p)
{
xAxisGrabbed = xAxis.contains(p);
yAxisGrabbed = yAxis.contains(p);
}

public void onMouseDrag(Location p)
{
if (xAxisGrabbed)
{
xAxis.moveTo(0, p.getY());
}

if (yAxisGrabbed)
{
yAxis.moveTo(p.getX(), 0);
}
}

public void paint(java.awt.Graphics g)
{
super.paint(g);
System.out.println("paint called");
}
} // End of public class ResizableBallController extends WindowController

最佳答案

很奇怪,但是Java JDK似乎对某些窗口管理器有问题。无意中找到了解决办法。 JFrame's position and pack() in Awesome WM

关于java - 调整 appletviewer 窗口大小时, Canvas 大小不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12985419/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com