有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在JPanel上绘制网格线作为背景

我有个问题。我在JFrame中使用了Gridbaglayout。其中一个组件是JPanel

我想画一条网格线作为我的JPanel的背景。e、 在下面的程序中,它应该产生3条垂直线和3条水平线,但是它只显示2条垂直线和2条水平线。最后一行没有显示

另一个问题是,JPanel的大小似乎比我设定的要大。我通过线条的长度注意到了这一点,线条比JPanel白色背景短

  public class drawLayout extends JComponent 
    {

 public Dimension getPreferredSize() { 
  return new Dimension(600, 600); 
 }

 public int getY() { 
  return 0; 
 } 

 public int getX() { 
   return 0; 
    }

    @Override public void paintComponent(Graphics g)
    {
     g.setPaint(Color.GRAY);

            for (int i = 0; i <= getSize().width; i += 300) 
            {
               g2.drawLine(i, 0, i, getSize().height);
            }

            for (int i = 0; i <= getSize().height; i += 300) 
            {
               g2.drawLine(0,i, getSize().width, i);
            }
    } 
}

编辑:

http://www.freeimagehosting.net/image.php?1af16edc28.jpg

第一个问题解决了(网格线显示在JPanel上)。 另一个问题使我困惑。正如您在所附的图片上看到的,当查看网格的长度(标记为红色框)时,JPanel的大小似乎超过600。如何解决这个问题,使网格线背景看起来很漂亮,而网格线外没有任何额外的空白


共 (1) 个答案

  1. # 1 楼答案

    你将i增加300。两次测试后,我是600,你退出for循环。 尝试将尺寸设置为601或增加299。您还可以在比较中使用宽度+1和高度+1