Java中如何给JButton/JLabel定位置?【高分悬赏】

是这样的。。。如果我们就用panel.add(button)的话他只会默认给你自动加到某个位置。。不过哪有软件是这样的我想给这些JLabel和JButton进行定位我试过... 是这样的。。。如果我们就用panel.add(button)的话他只会默认 给你自动加到某个位置。。不过哪有软件是这样的 我想给这些JLabel和JButton进行定位 我试过用setLocation(x,y)都没有用 不知道为什么。。有时候反而不显示了。。。
以下是我的代码

import javax.swing.*;
public class GUI {
private static JFrame frame = new JFrame ("GUI test");
private static JPanel panel = new JPanel();
private static JLabel label = new JLabel ("GUI label test");
private static JButton button = new JButton("Button1");;

public static void main (String [] args){
frame.setLayout(null);
panel.setLayout(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800,768);
panel.add(button);
button.setLocation(100,100);
panel.add(label);
label.setLocation(50,50);
frame.add(panel);
frame.setVisible(true);
}

}
求解释
我这情况要对谁取消布局管理?是frame还是Panel还是Button...
展开
 我来答
百度网友845f74e61
2012-05-27 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1567万
展开全部
setLocation
public void setLocation(int x,
int y)将组件移到新位置。通过此组件父级坐标空间中的 x 和 y 参数来指定新位置的左上角。

参数:
x - 父级坐标空间中新位置左上角的 x 坐标
y - 父级坐标空间中新位置左上角的 y 坐标

setLayout会覆盖setLocation行为,
setLocation()不能保证跨平台的界面一致性

setLocation 的X,Y坐标不是画面上的,
下边是给你改的代码.用setBounds来设置坐标及大小.
-------------------------------------------------------------
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class GUI {
private static JFrame frame = new JFrame("GUI test");
private static JPanel panel = new JPanel();
private static JLabel label = new JLabel("GUI label test");
private static JButton button = new JButton("Button1");;

public static void main(String[] args) {
frame.setLayout(null);
panel.setLayout(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 768);
panel.add(button);
// button.setLocation(100, 100);
button.setBounds(100, 100, 160, 24);
panel.add(label);
// label.setLocation(50, 50);

panel.setBounds(0, 0, 700, 700);
frame.add(panel);
frame.setVisible(true);
}

}
windsun_ul
2012-05-26
知道答主
回答量:22
采纳率:100%
帮助的人:25.2万
展开全部
必须容器用 null 布局
然后控件 setBounds
bounds 包含的参数是位置(x,y)和大小(w,h)
这个 bounds 本来是布局管理器去控制计算的
既然 null 布局,不用管理器
只有自己去设置

只 setLocation 的话,只有位置,没有大小——大小默认为 (0,0),所以不行
追问
setBounds是(x,y,w,h)必须4个parameter一起吗?
那神马情况下才能用setLocation
是不是把按钮setSize之后用setLocation就可以了?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幽冥神者
2012-05-26 · TA获得超过3213个赞
知道大有可为答主
回答量:1953
采纳率:50%
帮助的人:1755万
展开全部
先setLayout(null)取消布局管理器
然后调用对象的setBounds()方法绝对定位
追问
setBounds X和Y位置都能调吗?那我的setLocation咋不行捏
追答
setBounds设置组件的位置和大小。位置是通过x和y坐标确定的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
木星上的程序员
2012-05-26 · TA获得超过476个赞
知道小有建树答主
回答量:602
采纳率:0%
帮助的人:403万
展开全部
用GridBabLayout + GridBagConstraints. 这个布局最灵活的。
setLocation(x,y)只是在屏幕的一个位置啊,比较难定位,定不好的,还不会出现在你的事JFrame里面呢,要一点点试
追问
呃 这个不会用。。能讲一下吗。。
追答
就是在panel内,设置组件的位置比较灵活,自己看看API文档的说明吧。
还有一种,你想定位的话,可以用new JLabel(" ") 用空格来代替啊, 想定到哪都行。但组件要被add进面板内。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b503f36
2012-05-26 · TA获得超过382个赞
知道小有建树答主
回答量:288
采纳率:0%
帮助的人:188万
展开全部
使用setXX()方式需要先将面板的默认布局清除掉。
Java中有顺序布局法,表格布局法,东南西北中布局法(此法最常用)等等,偶YEAH!!,说的比较随便,Java中不是这个叫法哈,嘿嘿
不过一般是需要布局的,难道你开发程序的时候去手动为每一个控件指定位置?而且这个位置还是不定的,需要一次一次的试才知道位置是否合适。
更多追问追答
追问
不过这的确不像visual basic一样你能随便拖。。
追答
当然,但是你可以通过你的外部面板大小,很容易就能控制内部控件的位置和大小,这就是Java中布局的好处,自己琢磨几次,一下就明了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式