如何加厚形状的边框

时间:2015-11-19 19:06:49

标签: java swing

当我点击一个形状时,为了显示"选择",我想调用一个方法drawSelected来重新绘制形状以显示它已被选中。这样的事情:https://gyazo.com/6e115bdca55aaecd70ebada7e046475d以及方形部分如何变厚。

为了做到这一点,我需要一个边框,我能够通过这样做来弄清楚如何做:

// Set paint to the random color
g2.setPaint(getColor());
g2.fill(rectangle);
// Set the border of shape to black
g2.setPaint(Color.black);
g2.draw(rectangle);

但现在当我点击一个矩形时,显示选择的方法仍然使用平移,我得到了这个:https://gyazo.com/07857f6782c3a32dc90946e79736374d只有顶部和左边变厚。

我知道底部和右边也正在绘制,因为它们填充了另一种颜色,它们与之前的矩形重叠,所以你不会看到它。

我的问题是,如何将边框的粗细更改为哪里而不是平移形状,我可以用较粗的边框重新绘制形状以显示选择?

1 个答案:

答案 0 :(得分:1)

正如您所说,最好的方法是使用较粗的边框重绘:

void computeAndPrint()
{
   int add,sub,mul,dd;
   int add1,sub1,mul1,dd1;
   int a,b,c,d;

   printf("\n");
   a=input("Please enter the numerator for your first equation");
   b=input("Please enter the denominator for your first equation");
   c=input("Please enter the numerator for your second equation");
   d=input("Please enter the denominator for your second equation");

   add=(a*d+b*c);
   add1=(b*d);
   int fac = gcd(add, add1);
   add /=fac;
   add1 /=fac;
   printf("\nThe sum of your fractions is: %d/%d",add,add1);

   sub=(a*d-b*c);
   sub1=(b*d);
   int red = gcd(sub, sub1);
   sub /=red;
   sub1 /=red;
   printf("\nThe difference of your fractions is: %d/%d",sub,sub1);

   mul=(a*c);
   mul1=(b*d);
   int red1 = gcd(mul, mul1);
   mul /=red1;
   mul1 /=red1;
   printf("\nThe product of your fractions is: %d/%d",mul,mul1);

   dd=(a*d);
   dd1=(b*c);
   int red2 = gcd(dd, dd1);
   dd /=red2;
   dd1 /=red2;
   printf("\nThe quotient of your fractions is: %d/%d",dd,dd1);

   printf("\n");
}

int main()
{
   while ( 1 )
   {
      computeAndPrint();
   }
   return 0;
}