正确的使用布局管理器是完成界面布局的基础。
布局管理器推荐:MigLayout
JPanel默认的布局管理器是FlowLayout,而且alignment=FlowLayout.CENTER。所以若未指定布局管理器,则JPanel上所有控件均居中排列。
使用布局管理器首先应为容器确定布局管理器
如:
JPanel panel = new JPanel
panel.setLayout(setLayout(new java.awt.BorderLayout()); // 使用BorderLayout
推荐使用MigLayout。需要下载Miglayout包,使用方式具体参见MigLayout的手册。这里给出简单的使用方式:
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import net.miginfocom.swing.MigLayout;
import javax.swing.JTextField;
import javax.swing.JButton;
public class Test extends JPanel{
private JTextField textField;
private JTextField textField_1;
public Test() {
setLayout(new MigLayout("", "[][grow]", "[][][]"));
JLabel label = new JLabel("New label");
add(label, "cell 0 0,alignx trailing");
textField = new JTextField();
add(textField, "cell 1 0,growx");
textField.setColumns(10);
JLabel label_1 = new JLabel("New label");
add(label_1, "flowy,cell 0 1,alignx trailing");
textField_1 = new JTextField();
add(textField_1, "cell 1 1,growx");
textField_1.setColumns(10);
JPanel panel = new JPanel(); // 此Panel未设定布局管理器,故使用FLowLayout,且alignment=FlowLayout.CENTER
add(panel, "cell 0 2 2 1,grow");
JButton button = new JButton("New button");
panel.add(button);
JButton button_1 = new JButton("New button");
panel.add(button_1);
}
public static void main(String args[]){
JFrame frame = new JFrame("Test");
frame.add(new Test());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(50, 50, 300, 150);
frame.setVisible(true);
}
}
void addLabel(){
JLabel jl = new JLabel(Sale.sale_info);
jl.setFont(new java.awt.Font("宋体", Font.PLAIN,16));
display.add(jl);
display.validate();
i++;
}