救命啊!需要控制java swing 各个组件的位置和大小

linus_liu2000 2009-08-17 06:18:14
我建了一个GUI,但难看之极,我其中有两个jpanel,每个都有一些组件,我希望能控制jpanel 以及其中组件的大小和位置,但setBounds还是setSize,一点作用都没有,快急死了,求教大家怎么帮我改改.

import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.event.*;


import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JPanel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.DefaultListModel;

public class weather extends JFrame {

private String[] entries={"1","22","333","4444"} ;

private JTextField country;
private JList jl;
private JTextField latitude;
private JTextField currentTime;
private JTextField wind;
private JTextField visibilityField;
private JTextField skycondition;
private JTextField dewpoint;
private JTextField relativehumidity;
private JTextField presure;
private JButton search;
private DefaultListModel listModel;

private JPanel p1,p2;

public weather() {

setUpUIComponent();
setTitle("Weather Report ");
setSize(600, 400);
setResizable(false);
setVisible(true);
}

private void setUpUIComponent(){

p1 = new JPanel();
p2 = new JPanel();

country=new JTextField(10);
latitude=new JTextField(12);
currentTime=new JTextField(12);
wind=new JTextField(12);
visibilityField=new JTextField(12);
skycondition=new JTextField(12);
dewpoint=new JTextField(12);
relativehumidity=new JTextField(12);
presure=new JTextField(12);
search=new JButton("SEARCH");

listModel = new DefaultListModel();
jl = new JList(listModel);

// jl=new JList(entries);
JScrollPane jsp=new JScrollPane(jl);

jl.setVisibleRowCount(8);
jsp.setBounds(120,120,80,80);

p1.add(country);
p1.add(search);
p1.add(jsp);

p2.add(new JLabel("latitude"));
p2.add(latitude);
p2.add(new JLabel("time"));
p2.add(currentTime);
p2.add(new JLabel("wind"));
p2.add(wind);
p2.add(new JLabel("visibility"));
p2.add(visibilityField);
p2.add(new JLabel("skycondition"));
p2.add(skycondition);
p2.add(new JLabel("dewpoint"));
p2.add(dewpoint);
p2.add(new JLabel("relativehumidity"));
p2.add(relativehumidity);
p2.add(new JLabel("presure"));
p2.add(presure);

this.getContentPane().setLayout(new FlowLayout());
this.setLayout(new GridLayout(1,2));

p2.setLayout(new GridLayout(8, 2));

this.add(p1);
this.add(p2);


}

public static void main(String[] args) {

JFrame frame = new weather();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}
...全文
647 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyqiang00 2009-08-17
  • 打赏
  • 举报
回复
Java中布置控件的位置有些确实不好做。
但是可以用别的可以拖拽的控件。
chosen0ne 2009-08-17
  • 打赏
  • 举报
回复
可以直接用netBeans拖拽控件,
非要自己写试试用GridBagLayout布局
hzq237 2009-08-17
  • 打赏
  • 举报
回复
额!这个有点麻烦!
那个容器的布局管理器设置为null 后
每个组件都要设置它们的位置,有点难调
linus_liu2000 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sahala3293 的回复:]
你要手动设置组件的位置的大小和位置的话,必需把那个容器的布局管理器设置为null
如:
  p2.setLayout(null);

[/Quote]

试了p2.setLayout(null),后p2中的东西就都没有了,能不能请你把代码写出来,谢谢
sahala3293 2009-08-17
  • 打赏
  • 举报
回复
你要手动设置组件的位置的大小和位置的话,必需把那个容器的布局管理器设置为null
如:
p2.setLayout(null);

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧