日期:2014-05-20  浏览次数:20748 次

java 部件的布局问题求指导!
我做一个排球计分系统,窗口中有很多个标签!
如何最简单的准确定位他们各个的位置。
问题一:
有setBounds(int x,int y,int width,int height),如果用setBounds定位各个标签或者按钮的话,那会不会太麻烦了,我的JButton加JLabel数目将近有20个! 
那可以用什么布局办法来解决我的问题呢。
(我用过布局管理器FlowLayout()......等等,效果都不理想。我也用过添加几个容器JPanel,再把标签加入到这几个容器中,再用布局管理器,效果也不理想。用GridBagLayout()用不来..不会用,感觉不太懂..熟练的也可以简单教我下GridBagLayout()..)
问题二:
如果用setBounds(int x,int y,int width,int height),我其中有的JLabel是存放了图片的。
①那width,height(宽度和高度)需要设置成什么呢?因为其图片本身就存在高度很宽度的啊。
②如果强行设置width和height,那会不会压缩图片?

有点啰嗦! 望大家帮助!

------解决方案--------------------
你需要先把JFrame布局管理器从默认的BorderLayout改为 null;
------解决方案--------------------
[code=Java][/code]package com.cn.csuinfo;

import java.awt.BorderLayout;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**/
public class Imageshow extends JFrame{
public Imageshow(){
JLabel r1=new JLabel("");
//Label r2=new Label("得分:");
this.setLayout(new BorderLayout());

ImageIcon ima=new ImageIcon(("src\\com\\cn\\csuinfo\\1.jpg"));
r1.setIcon(ima);
add(r1,BorderLayout.EAST);//此处改用BorderLayout
r1.setBounds(300,100,1,1);
setVisible(true);
setSize(700, 500);
//setBackground(Color.red); 
}
public static void main(String args[]){
Imageshow f=new Imageshow();
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
//f.setLayout(null);
}


}

用BorderLayout布局啊!