java gui中怎么用jpanel实现组件的绝对定位 5

不是绝对,是相对... 不是绝对,是相对 展开
 我来答
1322163883
2013-03-07
知道答主
回答量:17
采纳率:0%
帮助的人:6.6万
展开全部

相对定位是利用布局管理器GridBagLayout() 来实现的GridBagLayout 布局是根据GridBagConstraints() 来设定的GridBagConstraints主要有8个重要参数需要掌握非别是

gridx,gridy  ——  设置组件的位置,

                   gridx设置为GridBagConstraints.RELATIVE代表此组件位于之前所加入组件的右边。

                   gridy设置为GridBagConstraints.RELATIVE代表此组件位于以前所加入组件的下面。

                   建议定义出gridx,gridy的位置以便以后维护程序。gridx=0,gridy=0时放在0行0列。

gridwidth,gridheight  ——  用来设置组件所占的单位长度与高度,默认值皆为1。

                            你可以使用GridBagConstraints.REMAINDER常量,代表此组件为此行或此列的最后一个组件,而且会占据所有剩余的空间。

weightx,weighty  ——  用来设置窗口变大时,各组件跟着变大的比例。

                       当数字越大,表示组件能得到更多的空间,默认值皆为0。

anchor  ——  当组件空间大于组件本身时,要将组件置于何处。

              有CENTER(默认值)、NORTH、NORTHEAST、EAST、SOUTHEAST、WEST、NORTHWEST选择。

insets  ——  设置组件之间彼此的间距。

              它有四个参数,分别是上,左,下,右,默认为(0,0,0,0)。

ipadx,ipady  ——  设置组件间距,默认值为0。

GridBagLayout里的各种设置都必须通过GridBagConstraints,因此当我们将GridBagConstraints的参数都设置

好了之后,必须new一个GridBagConstraints的对象出来,以便GridBagLayout使用。

构造函数:

    GirdBagLayout()建立一个新的GridBagLayout管理器。

    GridBagConstraints()建立一个新的GridBagConstraints对象。

    GridBagConstraints(int gridx,int gridy,

                                   int gridwidth,int gridheight,

                                   double weightx,double weighty,

                                   int anchor,int fill, Insets insets,

                                   int ipadx,int ipady)建立一个新的GridBagConstraints对象,并指定其参数的值


下面是我的例程:

实现


import javax.swing.*;

import java.util.*;

import java.awt.*;

public class Example extends JFrame{

  private void makeComponent(GridBagLayout gbLaout,GridBagConstraints constraints,Component component)

  {

gbLaout.setConstraints(component, constraints);

add(component);

  }

    public static void main(String args[]) {

    Example exp=new Example();

       GridBagLayout gridbag = new GridBagLayout();

       GridBagConstraints c = new GridBagConstraints();

       exp.setLayout(gridbag);

       

       JButton jb1=new JButton("JButton1");

       

       c.gridx=0;

       c.gridy=0;

       c.gridwidth=1;

       c.gridheight=1;

       c.weightx=1;

       c.weighty=0; 

       

       c.anchor=GridBagConstraints.CENTER;

       c.fill=GridBagConstraints.HORIZONTAL;

     

       c.insets=new Insets(0,0,0,0);

       c.ipadx=0;

       c.ipady=0;

       exp.makeComponent(gridbag,c,jb1);

       

       JButton jb2=new JButton("JButton2");

       c.gridx=1;

       exp.makeComponent(gridbag,c,jb2);

       JButton jb3=new JButton("JButton2");

       c.gridx=2;

       exp.makeComponent(gridbag,c,jb3);

       JButton jb4=new JButton("JButton2");

       c.gridx=3;

       exp.makeComponent(gridbag,c,jb4);

       

       JButton jb5=new JButton("JButton5");

       c.gridx=0;

       c.gridy=1;

       c.gridheight=1;

       c.gridwidth=4;

       exp.makeComponent(gridbag,c,jb5);

       

       JButton jb6=new JButton("JButton6");

       c.gridx=0;

       c.gridy=2;

       c.gridwidth=3;

       exp.makeComponent(gridbag,c,jb6);

       

       JButton jb7=new JButton("JButton7");

       c.gridx=3;

       c.gridy=2;

       c.gridwidth=1;

       exp.makeComponent(gridbag,c,jb7);

       

       JButton jb8=new JButton("JButton8");

       c.gridx=0;

       c.gridy=3;

       c.gridwidth=1;

       c.gridheight=2;

       c.fill=GridBagConstraints.BOTH;

       exp.makeComponent(gridbag,c,jb8);

       

       JButton jb9=new JButton("JButton9");

       c.gridx=1;

       c.gridy=3;

       c.gridwidth=3;

       c.gridheight=1;

       c.fill=GridBagConstraints.HORIZONTAL;

       exp.makeComponent(gridbag,c,jb9);

       

       JButton jb10=new JButton("JButton10");

       c.gridx=1;

       c.gridy=4;

       c.gridwidth=3;

       c.gridheight=1;

       c.fill=GridBagConstraints.HORIZONTAL;

       exp.makeComponent(gridbag,c,jb10);

       

       exp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       exp.setSize(500,500);

       exp.setVisible(true);

    }

}

小傻

推荐于2018-04-07 · 知道合伙人软件行家
小傻
知道合伙人软件行家
采纳数:11567 获赞数:31134
已经做过两个上架的app和两个网页项目.

向TA提问 私信TA
展开全部
javagui中jpanel实现组建的绝对定位,使用的是规定组件的x、y坐标来确定,如下:
setBounds
public void setBounds(int x,
int y,
int width,
int height)移动组件并调整其大小。由 x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。

参数:
x - 组件的新 x 坐标
y - 组件的新 y 坐标
width - 组件的新 width
height - 组件的新 height

所有Swing组件都可以用
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
转眯爱j
2011-08-21 · TA获得超过283个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:82.8万
展开全部
setBounds
public void setBounds(int x,
int y,
int width,
int height)移动组件并调整其大小。由 x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。

参数:
x - 组件的新 x 坐标
y - 组件的新 y 坐标
width - 组件的新 width
height - 组件的新 height

所有Swing组件都可以用
追问
这个在JPanel中有用吗?
追答
绝大部分带J的swing组件都有用,
这个方法是Component的,只要直接或间接继承Component
(除了几个没继承放在swing包里面的:如JDialog继承的是Dialog)都能用
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
就在爱丁堡
2011-08-28 · TA获得超过114个赞
知道小有建树答主
回答量:185
采纳率:0%
帮助的人:106万
展开全部
jpanle里可以直接设定坐标
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式