如何根据窗口大小缩放对象?

时间:2014-02-11 02:07:06

标签: java swing user-interface shape

我正在尝试在JPanel内部创建一个形状,并且随着JPanel的增加和减小,形状的大小也会相应地改变。

   protected void paintComponent(Graphics g)
   {
      super.paintComponent(g);
      g.drawLine(0,100,50,0);
   }

我的问题是我不知道如何使用this.getHeight()或this.getLength()的内容来扩展它。

2 个答案:

答案 0 :(得分:3)

除了@MadProgrammer概述的路径外,我还可以考虑另外两种缩放图形的方法。

Swing组件通常可以依赖Graphics对象实际上是Graphics2D对象。

  1. 然后我们可以使用Graphics2D.scale(sx,sy)
  2. AffineTransform的缩放实例(使用getScaleInstance(sx,sy)获得。在绘制之前将其设置为Graphics2D
  3. 使用任何一种方法,原始坐标将根据需要进行缩放。

答案 1 :(得分:2)

假设您的意思是希望在组件大小改变时保持比例...

有几种方法可以做到这一点......

您可以从确定“默认”值开始,也就是说,如果“首选”宽度为200,则行起点为宽度的50%,终点为25%。宽度。

这可以让你做类似的事情......

int width = getWidth();
int x1 = (int)(Math.round(width * 0.5d);
int x2 = (int)(Math.round(width * 0.25d);
g.drawLine(0, x1, x2, 0);