我建了一个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);
}}
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);
}}
如:
p2.setLayout(null);
试了p2.setLayout(null),后p2中的东西就都没有了,能不能请你把代码写出来,谢谢
那个容器的布局管理器设置为null 后
每个组件都要设置它们的位置,有点难调
非要自己写试试用GridBagLayout布局
但是可以用别的可以拖拽的控件。