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

Java 如何根据窗口大小缩放对象?,java,swing,user-interface,shape,Java,Swing,User Interface,Shape,我试图在JPanel内部创建一个形状,随着JPanel的增加和减少,形状的大小也会相应地改变 protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawLine(0,100,50,0); } 我的问题是,我不知道如何使用类似于此.getHeight()或此.getLength()的东西来缩放它。假设您的意思是希望在组件大小变化时保持成比例的比率 有几种方法可以做

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

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

我的问题是,我不知道如何使用类似于此.getHeight()或此.getLength()的东西来缩放它。

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

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

您可以从确定“默认”值开始,也就是说,如果“首选”宽度为
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);

除了@MadProgrammer勾勒出的路径外,我还可以想到另外两种缩放图形的方法

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

  • 然后我们可以使用
  • AffineTransform
    (使用获取)的比例实例。在绘制之前,将其设置为
    图形2d
  • 使用任何一种方法,原始坐标都将根据需要进行缩放