我在GridLayout(3,3)形式的面板中添加了9个按钮 用getX()和getY()方法返回坐标的时候都是0 是不是要用setBounds()方法设置按钮才能返回有效的坐标和大小 高手指点一下

解决方案 »

  1.   

    显示出来后getX() getY()才有意义
      

  2.   

    GridLayout(3,3)的布局管理是,将容器分成3行3列,大小相等的矩形。一个矩形只能放置一个组件。即:一个网格只能添加一个按钮。且组件填充满这个网格。
    换句话说,GridLayout(3,3)将容器再次分割成9个子容器,将按钮添加到子容器中,调用getX()、getY()方法,求出来的是按钮在子容器中的坐标。这个坐标原点是左上角。所以就都是(0,0)了。
    这样说,应该清楚了把!至于设置按钮的大小和坐标?要看具体情况。一般有3种方法:
    1.可以设置网格与网格之间的间距。
    setVgap(int vgap) 垂直间距
    setHgap(int hgap) 水平间距
      设置边框间距。
    Swing界面的写法:设置一个框架JFrame,再在框架中添加面板,面板设置布局管理,面板中还可以添加子面板。按钮等组件则添加在面板中。设置边框间距,可以在框架中设置边界。
    2.运用空标签
    空标签就是什么也不显示的空白标签,运用它可以让它占用一个网格,这样就达到了排版、间隔的目的。
    3.使用面板嵌套的方法
    单一布局很难达到理想效果,采用面板嵌套能有效解决这个问题。所以:你采用网格布局,按钮大小设置,只能通过网格的大小来决定。而设置按钮的位置,则通过网格的位置,即添加在第几个网格中。还有什么不懂的吗?