2012-01-30 68 views
1

我想将小程序的大小加倍(包括定位在其上的图形和组件)。放大小程序的图形大小

在我开始改变每个坐标之前,有没有简单的方法来完成这个任务?

+0

当你说“每个坐标”时 - 是否所有的面板都使用XY像素位置定位?如果你使用布局管理器来处理事物的大小/位置,它应该不难。 – 2012-01-30 20:41:02

+0

面板使用XY定位。也使用XY在一些面板上绘制图形。如果我必须手动乘以每个绘制坐标,这将非常痛苦。 – user1012037 2012-01-30 21:07:16

+0

*“使用XY定位面板。”* 1)如果使用了布局(正确),GUI将展开或收缩以适应可用空间。如果重写'paint()/ paintComponent()',则您有责任缩放“Graphics”的渲染。 2)你可能会这样做,就像你在'JFrame'中做的那样(所以它与applet没什么关系)。 3)applet通常不能调整大小,那么如何实现这个“缩放”呢? 4)为了更快地获得更好的帮助,请发布[SSCCE](http://sscce.org/)。 – 2012-01-31 01:56:34

回答

2

自从我编写了一个Java小程序以来,已经有一段时间了,所以我无法确切地告诉你哪些类和接口。

但作为一般原则,你可以用装饰器做到这一点。创建一个实现与图形上下文对象*相同接口的类。将实际的图形上下文传递给你的类的构造函数。对于类中的每个方法,请在其包装的图形上下文对象上调用相同的方法。并将放大倍数设置为该类的一个字段,以便将来可以将其放大3倍。

然后,当您的代码获取图形对象时,将其替换为您的自定义类的实例,该实例应该包装图形对象。如果这是不可能的,你可能不得不破解你的原始代码。但请接受我的建议 - 这次将倍增因子作为变量/字段添加,以便下次您可以一次性调整数字。

  • 或者,如果没有可用的界面,这看起来是在Graphics类,扩展它,并一定要覆盖每一个方法。
0

如果小程序内容缩放,您只需在嵌入html页面中更改小程序的大小。这假定只使用相对或计算的坐标和布局管理器。如果元素位于绝对位置,这将不起作用。然后,你将不得不触摸代码或编写一个可以扩展内容的包装器,就像Joe所建议的那样。

+0

即使这确实有效(我不确定它会如何),那么你会在帧缓冲区中失去效率。 – Joe 2012-01-30 21:14:51

+0

对,它(缩放黑客)可能适用于浏览器/操作系统组合太少,真的很有用。只是在嵌入HTML中缩放小程序似乎没有办法,如果我正确解释发布者的评论,看起来像使用绝对坐标。 – 2012-01-30 21:28:26

+0

我们可能会以不同的方式阅读这个问题......希望OP能让它更清晰一些。 – Joe 2012-01-30 21:39:04