java的布局方式非常常用,以下介绍5种常用的布局方式。

1.FlowLayout(流式布局)

import java.awt.Container;

import java.awt.FlowLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

/**

将组件已加入顺序从左到右排序,一行排满就会去第二行。每行组件剧中排列

*/

public class FlowLayoutDemo {

private JFrame frame;

private JButton button1,button2,button3,button4,button5;

public static void main(String[] args) {

FlowLayoutDemo fd = new FlowLayoutDemo();

fd.go();

}

private void go() {

frame = new JFrame("flowlayout");

Container contentPane = frame.getContentPane();

contentPane.setLayout(new FlowLayout());

button1 = new JButton("OK");

button2 = new JButton("OPEN");

button3 = new JButton("CLOSE");

button4 = new JButton("aaa");

button5 = new JButton("CLOSEccc");

contentPane.add(button1);

contentPane.add(button2);

contentPane.add(button3);

contentPane.add(button4);

contentPane.add(button5);

frame.setSize(300,200);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}12345678910111213141516171819202122232425262728293031323334353637383940运行结果如下

2.BorderLayout(边界布局)

import java.awt.BorderLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

/**

由BorderLayout管理的容器被划分为5个区域North south west east center

*/

public class BorderLayoutDemo {

private JFrame frame;

private JButton be,bw,bn,bs,bc;

public static void main(String[] args) {

BorderLayoutDemo bd = new BorderLayoutDemo();

bd.go();

}

private void go() {

frame = new JFrame("BorderLayoutDemo");

be = new JButton("east");

bw = new JButton("west");

bn = new JButton("north");

bs = new JButton("south");

bc = new JButton("center");

frame.getContentPane().add(be,BorderLayout.EAST);

frame.getContentPane().add(bw,BorderLayout.WEST);

frame.getContentPane().add(bn,BorderLayout.NORTH);

frame.getContentPane().add(bs,BorderLayout.SOUTH);

frame.getContentPane().add(bc,BorderLayout.CENTER);

frame.setSize(300, 200);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

12345678910111213141516171819202122232425262728293031323334353637383940运行结果如下

3.GridLayout(网格布局)

import java.awt.Container;

import java.awt.Dimension;

import java.awt.GridLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

/**

将容器分为若干行和列,组件依次放入其中每个组件占据一格。

*/

public class GridLayoutDemo {

public static void main(String[] args) {

MyWindow that = new MyWindow();

that.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

@SuppressWarnings(“serial”)

class MyWindow extends JFrame {

private JButton b1,b2,b3,b4,b5,b6;

public MyWindow() {

setTitle(“grid”);

Container contentPane = getContentPane();

contentPane.setPreferredSize(new Dimension(400,300));

contentPane.setLayout(new GridLayout(3,2));//3行2列

b1 =new JButton(“b1”);

b2 =new JButton(“b2”);

b3 =new JButton(“b3”);

b4 =new JButton(“b4”);

b5 =new JButton(“b5”);

b6 =new JButton(“b6”);

contentPane.add(b1);

contentPane.add(b2);

contentPane.add(b3);

contentPane.add(b4);

contentPane.add(b5);

contentPane.add(b6);

pack();

setVisible(true);

}

}1234567891011121314151617181920212223242526272829303132333435363738394041424344运行结果如下

4.BoxLayout(盒式布局)

import java.awt.BorderLayout;

import java.awt.Container;

import java.awt.FlowLayout;

import java.awt.Label;

import javax.swing.BoxLayout;

import javax.swing.JFrame;

import javax.swing.JPanel;

/**

将容器中的组件水平或者竖直排成一行或一列

*/

public class BoxLayoutDemo {

private JFrame jFrame;

private JPanel jPanel,jPanel2;

public static void main(String[] args) {

BoxLayoutDemo boxLayoutDemo = new BoxLayoutDemo();

boxLayoutDemo.go();

}

private void go () {

jFrame = new JFrame("box lay");

Container contentPane = jFrame.getContentPane();

jPanel = new JPanel();

jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));

jPanel.add(new Label("1"));

jPanel.add(new Label("2"));

jPanel.add(new Label("3"));

contentPane.add(jPanel, BoxLayout.X_AXIS);

jPanel2 = new JPanel();

jPanel2.setLayout(new BoxLayout(jPanel2, BoxLayout.X_AXIS));

jPanel2.add(new Label("yes"));

jPanel2.add(new Label("no"));

jPanel2.add(new Label("cancel"));

//contentPane.add(jPanel2,BorderLayout.SOUTH);

//contentPane.add(jPanel2,FlowLayout.CENTER);

jFrame.pack();

jFrame.setVisible(true);

jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

123456789101112131415161718192021222324252627282930313233343536373839404142434445运行结果如下

5.CradLayout(卡片布局)

import java.awt.BorderLayout;

import java.awt.CardLayout;

import java.awt.Container;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

/**

卡片布局 每时每刻只显示一张

*/

@SuppressWarnings(“serial”)

public class CardlayoutDemo extends JFrame {

public static void main(String[] args) {

new CardlayoutDemo();

}

public CardlayoutDemo() {

this.setTitle("Cardlayout");

this.setSize(400, 400);

this.setLocationRelativeTo(null);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container c = this.getContentPane();

JButton jbtn1 = new JButton("上一个");

c.add(jbtn1, BorderLayout.NORTH);

final JPanel mainJPanel = new JPanel();

//匿名内部类只能访问final变量

final CardLayout cardLayout = new CardLayout();

mainJPanel.setLayout(cardLayout);

mainJPanel.add(new JLabel("第1张"), "one");

mainJPanel.add(new JLabel("第2张"), "two");

mainJPanel.add(new JLabel("第3张"), "three");

mainJPanel.add(new JLabel("第4张"), "four");

c.add(mainJPanel, BorderLayout.CENTER);

JButton jbtn2 = new JButton("下一个");

c.add(jbtn2, BorderLayout.SOUTH);

jbtn1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

cardLayout.previous(mainJPanel);

}

});

jbtn2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

cardLayout.next(mainJPanel);

}

});

//cardLayout.show(mainJPanel, "three");

this.setVisible(true);

}

}

运行结果如下


收藏!重庆医保门诊特殊疾病待遇保障政策
万方数据知识服务平台