博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java图形界面设计
阅读量:5982 次
发布时间:2019-06-20

本文共 18628 字,大约阅读时间需要 62 分钟。

一、总述

Java的图形用户界面由各种组件(component)构成,它们主要位于java.awt包与javax.swing包中。Swing与AWT最大的不同是,Swing在实现时,不包含任何本地代码(native),是一种“轻量级(lightweight)”的组件

Swing具有状态的组件。

二、容器

1.顶层容器:

JFrame、JApplet、JDialog 和 JWindow

2.JFrame创建的一个程序

2.1代码

 

[java]
  1. import java.awt.*; 
  2. import javax.swing.*; 
  3.   
  4. publicclass JFrameDemo{ 
  5.     publicstaticvoid main(String args[]){ 
  6.         JFrame frame = new JFrame("JFrameDemo"); 
  7.         JButton button = new JButton("Press Me"); 
  8.   
  9.         //first way to do that 
  10.         // frame.getContentPane().add(button,BorderLayout.CENTER); 
  11.   
  12.   
  13.         //another way to set the Pane    
  14.         JPanel contentPane = new JPanel(); 
  15.         contentPane.setLayout(new BorderLayout()); 
  16.         contentPane.add(button,BorderLayout.CENTER); 
  17.         frame.setContentPane(contentPane); 
  18.   
  19.         //frame.pack(); 
  20.         frame.setVisible(true); 
  21.     } 
import java.awt.*; import javax.swing.*;  public class JFrameDemo{ 	public static void main(String args[]){ 		JFrame frame = new JFrame("JFrameDemo"); 		JButton button = new JButton("Press Me");  		//first way to do that 		// frame.getContentPane().add(button,BorderLayout.CENTER);   		//another way to set the Pane 	 		JPanel contentPane = new JPanel(); 		contentPane.setLayout(new BorderLayout()); 		contentPane.add(button,BorderLayout.CENTER); 		frame.setContentPane(contentPane);  		//frame.pack(); 		frame.setVisible(true); 	} }

2.2执行结果

 

3.面板(JPanel)

可以相互嵌套,不能独立存在,只能添加到其他窗口内部。

3.1代码

 

[java]
  1. import java.awt.*; 
  2. import javax.swing.*; 
  3.   
  4. publicclass FrameWithPanel{ 
  5.     publicstaticvoid main(String args[]){ 
  6.     JFrame frame = new JFrame("Frame with Panel"); 
  7.     Container contentPane = frame.getContentPane(); 
  8.     contentPane.setBackground(Color.CYAN); 
  9.   
  10.     JPanel panel = new JPanel(); 
  11.     panel.setBackground(Color.yellow); 
  12.   
  13.     JButton button = new JButton("Press me"); 
  14.     panel.add(button); 
  15.     //add JButton instance to JPanel 
  16.   
  17.     //add JPanel instance to JFrame's south 
  18.     contentPane.add(panel,BorderLayout.SOUTH); 
  19.     frame.setSize(300,200); 
  20.     frame.setVisible(true); 
  21.     } 
import java.awt.*; import javax.swing.*;  public class FrameWithPanel{ 	public static void main(String args[]){ 	JFrame frame = new JFrame("Frame with Panel"); 	Container contentPane = frame.getContentPane(); 	contentPane.setBackground(Color.CYAN);  	JPanel panel = new JPanel(); 	panel.setBackground(Color.yellow);  	JButton button = new JButton("Press me"); 	panel.add(button); 	//add JButton instance to JPanel  	//add JPanel instance to JFrame's south 	contentPane.add(panel,BorderLayout.SOUTH); 	frame.setSize(300,200); 	frame.setVisible(true); 	} }

3.2执行结果

 

三、布局

1.总述

组件的布局(包括位置与大小)通常由Layout Manager负责安排。Java平台提供了多种布局管理器,以下对其部分,进行说明。

2.FlowLayout Layout Manager

2.1FlowLayout 的三种构造方法

 

[java]
  1. public FlowLayout() 
  2.     public FlowLayout(int align) 
  3.     public FlowLayout(int align,int hgap,int vgap) 
public FlowLayout() 			public FlowLayout(int align) 			public FlowLayout(int align,int hgap,int vgap)

 

构造方法中,提供了一个对齐方式的可选项align,取值有三种形式:FlowLayout.LEFT、 FlowLayout.CENTER 、FlowLayout.RIGHT。hgap和vgap可以设定组件的水平间距和垂直距离。

2.2参考代码

 

[java]
  1. import java.awt.*; 
  2. import javax.swing.*; 
  3.   
  4. publicclass FlowLayoutDemo{ 
  5.     private JFrame frame; 
  6.     private JButton btn1,btn2,btn3; 
  7.   
  8.     publicstaticvoid main(String args[]){ 
  9.     FlowLayoutDemo that = new FlowLayoutDemo(); 
  10.     that.go(); 
  11.     } 
  12.     publicvoid go(){ 
  13.     frame = new JFrame("Flow Layout"); 
  14.     Container contentPane = frame.getContentPane(); 
  15.   
  16.     contentPane.setLayout(new FlowLayout()); 
  17.   
  18.     btn1 = new JButton("OK"); 
  19.     btn2 = new JButton("Open"); 
  20.     btn3 = new JButton("Close"); 
  21.   
  22.     contentPane.add(btn1); 
  23.     contentPane.add(btn2); 
  24.     contentPane.add(btn3); 
  25.   
  26.     frame.setSize(300,200); 
  27.     frame.setVisible(true); 
  28.     } 
import java.awt.*; import javax.swing.*;  public class FlowLayoutDemo{ 	private JFrame frame; 	private JButton btn1,btn2,btn3;  	public static void main(String args[]){ 	FlowLayoutDemo that = new FlowLayoutDemo(); 	that.go(); 	} 	public void go(){ 	frame = new JFrame("Flow Layout"); 	Container contentPane = frame.getContentPane();  	contentPane.setLayout(new FlowLayout());  	btn1 = new JButton("OK"); 	btn2 = new JButton("Open"); 	btn3 = new JButton("Close");  	contentPane.add(btn1); 	contentPane.add(btn2); 	contentPane.add(btn3);  	frame.setSize(300,200); 	frame.setVisible(true); 	} }

2.3执行结果

 

改变Frame的大小,Frame中组件的布局也会随之改变。

3.BorderLayout 布局管理器

3.1概述

BorderLayout是顶层窗口中内容窗格的默认布局管理器,被划分为BorderLayout.NORTH、BorderLayout.SOUTH、BorderLayout.WEST、BorderLayout.EAST、BorderLayout.CENTER 五个区域。

3.2构造函数

 

[java]
  1. BorderLayout() 
  2.     BorderLayout(int,int
BorderLayout() 			BorderLayout(int,int)

3.3示例代码

 

[java]
  1. import java.awt.*; 
  2. import javax.swing.*; 
  3.   
  4. publicclass BorderLayoutDemo{ 
  5.     private JFrame frame; 
  6.     private JButton be,bw,bn,bs,bc; 
  7.   
  8.     publicstaticvoid main(String args[]){ 
  9.     BorderLayoutDemo that = new BorderLayoutDemo(); 
  10.     that.go(); 
  11.     } 
  12.     publicvoid go(){ 
  13.     frame = new JFrame("Border Layout"); 
  14.     be = new JButton("East"); 
  15.     bw = new JButton("West"); 
  16.     bn = new JButton("North"); 
  17.     bs = new JButton("South"); 
  18.     bc = new JButton("Center"); 
  19.   
  20.     frame.getContentPane().add(be,"East"); 
  21.     frame.getContentPane().add(bw,BorderLayout.WEST); 
  22.     frame.getContentPane().add(bn,BorderLayout.NORTH); 
  23.     frame.getContentPane().add(bs,BorderLayout.SOUTH); 
  24.     frame.getContentPane().add(bc,BorderLayout.CENTER); 
  25.   
  26.     frame.setSize(350,200); 
  27.     frame.setVisible(true); 
  28.     } 
import java.awt.*; import javax.swing.*;  public class BorderLayoutDemo{ 	private JFrame frame; 	private JButton be,bw,bn,bs,bc;  	public static void main(String args[]){ 	BorderLayoutDemo that = new BorderLayoutDemo(); 	that.go(); 	} 	public void go(){ 	frame = new JFrame("Border Layout"); 	be = new JButton("East"); 	bw = new JButton("West"); 	bn = new JButton("North"); 	bs = new JButton("South"); 	bc = new JButton("Center");  	frame.getContentPane().add(be,"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(350,200); 	frame.setVisible(true); 	} }

 

3.4执行结果

 

 

4.GridLayout布局管理器

4.1总述

是一种网格式的布局管理器,将窗口空间分割成若干行,乘若干列的网格。组件依次放入,占一格。

4.2构造函数

public GridLayout()

public GridLayout(int rows, int cols)

public GridLayout(int rows, int cols, int hgap, int vgap)

4.3参考代码

 

[java]
  1. import java.awt.*; 
  2. import javax.swing.*; 
  3.   
  4. publicclass GridLayoutDemo{ 
  5.     private JFrame frame; 
  6.     private JButton b1,b2,b3,b4,b5,b6; 
  7.   
  8.     publicstaticvoid main(String args[]){ 
  9.     GridLayoutDemo that = new GridLayoutDemo(); 
  10.     that.go(); 
  11.     } 
  12.     publicvoid go(){ 
  13.     frame = new JFrame("Grid Frame"); 
  14.   
  15.     Container contentPane = frame.getContentPane(); 
  16.   
  17.     contentPane.setLayout(new GridLayout(3,2)); 
  18.   
  19.     b1 = new JButton("grid_1"); 
  20.     b2 = new JButton("grid_2"); 
  21.     b3 = new JButton("grid_3"); 
  22.     b4 = new JButton("grid_4"); 
  23.     b5 = new JButton("grid_5"); 
  24.     b6 = new JButton("grid_6"); 
  25.   
  26.     contentPane.add(b1); 
  27.     contentPane.add(b2); 
  28.     contentPane.add(b3); 
  29.     contentPane.add(b4); 
  30.     contentPane.add(b5); 
  31.     contentPane.add(b6); 
  32.   
  33.     frame.pack(); 
  34.     frame.setVisible(true); 
  35.     } 
import java.awt.*; import javax.swing.*;  public class GridLayoutDemo{ 	private JFrame frame; 	private JButton b1,b2,b3,b4,b5,b6;  	public static void main(String args[]){ 	GridLayoutDemo that = new GridLayoutDemo(); 	that.go(); 	} 	public void go(){ 	frame = new JFrame("Grid Frame");  	Container contentPane = frame.getContentPane();  	contentPane.setLayout(new GridLayout(3,2));  	b1 = new JButton("grid_1"); 	b2 = new JButton("grid_2"); 	b3 = new JButton("grid_3"); 	b4 = new JButton("grid_4"); 	b5 = new JButton("grid_5"); 	b6 = new JButton("grid_6");  	contentPane.add(b1); 	contentPane.add(b2); 	contentPane.add(b3); 	contentPane.add(b4); 	contentPane.add(b5); 	contentPane.add(b6);  	frame.pack(); 	frame.setVisible(true); 	} }

 

4.4执行结果

5.CardLayout 布局管理器

5.1总述

是一种卡片式的布局管理器,它将容器中的组件处理成一系列卡片,每一时刻只显示出其中一张。

5.2参考代码:

 

[java]
  1. import java.awt.*; 
  2. import javax.swing.*; 
  3. import java.awt.event.*; 
  4.   
  5. publicclass CardLayoutDemo extends MouseAdapter{ 
  6.     JPanel p1,p2,p3,p4,p5; 
  7.     JLabel l1, l2, l3, l4, l5; 
  8.   
  9.     //declare a Cardlayout object 
  10.     CardLayout myCard; 
  11.     JFrame frame; 
  12.     Container contentPane; 
  13.   
  14.     publicstaticvoid main(String args[]){ 
  15.     CardLayoutDemo that = new CardLayoutDemo(); 
  16.     that.go(); 
  17.     System.out.println("test"); 
  18.     } 
  19.   
  20.     publicvoid go(){ 
  21.     frame = new JFrame("Card Test"); 
  22.     contentPane = frame.getContentPane(); 
  23.     myCard = new CardLayout(); 
  24.   
  25.     contentPane.setLayout(myCard); 
  26.   
  27.     p1=new JPanel(); 
  28.     p2 = new JPanel(); 
  29.     p3 = new JPanel(); 
  30.     p4 = new JPanel(); 
  31.     p5 = new JPanel(); 
  32.   
  33.     //set the different bk color for each JPanel label 
  34.     l1 =  new JLabel("This is the first JPanel"); 
  35.     p1.add(l1); 
  36.     p1.setBackground(Color.yellow); 
  37.   
  38.     l2 =  new JLabel("This is the second JPanel"); 
  39.     p2.add(l2); 
  40.     p2.setBackground(Color.green); 
  41.   
  42.     l3 =  new JLabel("This is the third JPanel"); 
  43.     p3.add(l3); 
  44.     p3.setBackground(Color.magenta); 
  45.   
  46.     l4 =  new JLabel("This is the forth JPanel"); 
  47.     p4.add(l4); 
  48.     p4.setBackground(Color.white); 
  49.   
  50.     l5 =  new JLabel("This is the fifth JPanel"); 
  51.     p5.add(l5); 
  52.     p5.setBackground(Color.cyan); 
  53.   
  54.     //set mouseListener 
  55.     p1.addMouseListener(this); 
  56.     p2.addMouseListener(this); 
  57.     p3.addMouseListener(this); 
  58.     p4.addMouseListener(this); 
  59.     p5.addMouseListener(this); 
  60.   
  61.     //set each JPanle as a Card to insert frame 
  62.     contentPane.add(p1,"First"); 
  63.     contentPane.add(p2,"Sencond"); 
  64.     contentPane.add(p3,"Third"); 
  65.     contentPane.add(p4,"Forth"); 
  66.     contentPane.add(p5,"Fifth"); 
  67.   
  68.     //display the first pic 
  69.     myCard.show(contentPane,"First"); 
  70.     frame.setSize(300,200); 
  71.      frame.show(); 
  72.     } 
  73.   
  74.     publicvoid mouseClicked(MouseEvent e){ 
  75.     myCard.next(contentPane); 
  76.     } 
import java.awt.*; import javax.swing.*; import java.awt.event.*;  public class CardLayoutDemo extends MouseAdapter{ 	JPanel p1,p2,p3,p4,p5; 	JLabel l1, l2, l3, l4, l5;  	//declare a Cardlayout object 	CardLayout myCard; 	JFrame frame; 	Container contentPane;  	public static void main(String args[]){ 	CardLayoutDemo that = new CardLayoutDemo(); 	that.go(); 	System.out.println("test"); 	}  	public void go(){ 	frame = new JFrame("Card Test"); 	contentPane = frame.getContentPane(); 	myCard = new CardLayout();  	contentPane.setLayout(myCard);  	p1=new JPanel(); 	p2 = new JPanel(); 	p3 = new JPanel(); 	p4 = new JPanel(); 	p5 = new JPanel();  	//set the different bk color for each JPanel label 	l1 =  new JLabel("This is the first JPanel"); 	p1.add(l1); 	p1.setBackground(Color.yellow);  	l2 =  new JLabel("This is the second JPanel"); 	p2.add(l2); 	p2.setBackground(Color.green);  	l3 =  new JLabel("This is the third JPanel"); 	p3.add(l3); 	p3.setBackground(Color.magenta);  	l4 =  new JLabel("This is the forth JPanel"); 	p4.add(l4); 	p4.setBackground(Color.white);  	l5 =  new JLabel("This is the fifth JPanel"); 	p5.add(l5); 	p5.setBackground(Color.cyan);  	//set mouseListener 	p1.addMouseListener(this); 	p2.addMouseListener(this); 	p3.addMouseListener(this); 	p4.addMouseListener(this); 	p5.addMouseListener(this);  	//set each JPanle as a Card to insert frame 	contentPane.add(p1,"First"); 	contentPane.add(p2,"Sencond"); 	contentPane.add(p3,"Third"); 	contentPane.add(p4,"Forth"); 	contentPane.add(p5,"Fifth");  	//display the first pic 	myCard.show(contentPane,"First"); 	frame.setSize(300,200); 	 frame.show(); 	}  	public void mouseClicked(MouseEvent e){ 	myCard.next(contentPane); 	} }

 

5.2执行结果

 

 

6.BoxLayout布局管理器

6.1总述

将容器中的组件,按水平排成一行,或按垂直方向排成一列。

6.2构造函数

BoxLayout(Container target, int axis)

axis = BoxLayout.X_AXIS | BoxLayout.Y_AXIS

6.3参考代码

 

import java.awt.*;

import javax.swing.*;

public class BoxLayoutDemo{

private JFrame frame;

private JPanel pv,ph;

public static void main(String args[]){

BoxLayoutDemo that = new BoxLayoutDemo();

that.go();

}

public void go(){

frame = new JFrame("Box Layout example");

Container contentPane = frame.getContentPane();

  pv = new JPanel();

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

  pv.add(new JLabel("Monday"));

pv.add(new JLabel("Tuesday"));

pv.add(new JLabel("Wednesday"));

pv.add(new JLabel("Thursday"));

pv.add(new JLabel("Friday"));

pv.add(new JLabel("Saturday"));

pv.add(new JLabel("Sunday"));   

contentPane.add(pv,BorderLayout.CENTER); 

ph  = new JPanel();  

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

ph.add(new JButton("Yes"));

ph.add(new JButton("No"));

ph.add(new JButton("Cancle"));

contentPane.add(ph,BorderLayout.SOUTH); 

frame.pack();

frame.setVisible(true);

}

}

 

6.4执行结果

 

6.5专门使用BoxLayout的特殊容器—Box类

6.5.1创建实例的静态方法

 

[java]
  1. publicstatic Box createHorizontalBox() 
  2.     publicstatic Box createVerticalBox() 
public static Box createHorizontalBox() 		public static Box createVerticalBox()

6.5.2|6.3的代码,改写如下

 

[java]
  1. //the specific Box class for BoxLayout Container 
  2. import java.awt.*; 
  3. import javax.swing.*; 
  4.   
  5. publicclass BoxDemo{ 
  6.     private JFrame frame; 
  7.     private Box bv,bh; 
  8.   
  9.     publicstaticvoid main(String arg[]){ 
  10.         BoxDemo that = new BoxDemo(); 
  11.         that.go(); 
  12.     } 
  13.     void go(){ 
  14.         frame = new JFrame("Box Layout example"); 
  15.         Container contentPane = frame.getContentPane(); 
  16.   
  17.         bv = Box.createVerticalBox(); 
  18.   
  19.         bv.add(new JLabel("Monday")); 
  20.         bv.add(new JLabel("Tuesday")); 
  21.         bv.add(new JLabel("Wednesday")); 
  22.         bv.add(new JLabel("Thursday")); 
  23.         bv.add(new JLabel("Friday")); 
  24.         bv.add(new JLabel("Saturday")); 
  25.         bv.add(new JLabel("Sunday")); 
  26.   
  27.         contentPane.add(bv,BorderLayout.CENTER); 
  28.   
  29.         bh = Box.createHorizontalBox(); 
  30.         bh.add(new JButton("Yes")); 
  31.         bh.add(new JButton("No")); 
  32.         bh.add(new JButton("Cancel")); 
  33.   
  34.         contentPane.add(bh,BorderLayout.SOUTH); 
  35.   
  36.         frame.setSize(300,200); 
  37.         //frame.pack(); 
  38.         frame.setVisible(true); 
  39.     } 
//the specific Box class for BoxLayout Container import java.awt.*; import javax.swing.*;  public class BoxDemo{ 	private JFrame frame; 	private Box bv,bh;  	public static void main(String arg[]){ 		BoxDemo that = new BoxDemo(); 		that.go(); 	} 	void go(){ 		frame = new JFrame("Box Layout example"); 		Container contentPane = frame.getContentPane();  		bv = Box.createVerticalBox();  		bv.add(new JLabel("Monday")); 		bv.add(new JLabel("Tuesday")); 		bv.add(new JLabel("Wednesday")); 		bv.add(new JLabel("Thursday")); 		bv.add(new JLabel("Friday")); 		bv.add(new JLabel("Saturday")); 		bv.add(new JLabel("Sunday"));  		contentPane.add(bv,BorderLayout.CENTER);  		bh = Box.createHorizontalBox(); 		bh.add(new JButton("Yes")); 		bh.add(new JButton("No")); 		bh.add(new JButton("Cancel"));  		contentPane.add(bh,BorderLayout.SOUTH);  		frame.setSize(300,200); 		//frame.pack(); 		frame.setVisible(true); 	} }

 

6.6Box类提供的创建不可组件方法

 

 

[java]
  1. publicstatic Component createHorizontalGlue() 
  2.     publicstatic Component createHorizontalStrut(int width) 
  3.     publicstatic Component createVerticalGlue() 
  4.     publicstatic Component createVerticalStrut(int height) 
  5.     publicstatic Component createRigidArea(Dimension d) 
public static Component createHorizontalGlue() 	public static Component createHorizontalStrut(int width) 	public static Component createVerticalGlue() 	public static Component createVerticalStrut(int height) 	public static Component createRigidArea(Dimension d)

6.6.1参考代码

 

[java]
  1. //to create invisible component 
  2. import java.awt.*; 
  3. import javax.swing.*; 
  4.   
  5. publicclass GlueAndStrut{ 
  6.     private JFrame frame; 
  7.     private Box b1,b2,b3,b4; 
  8.   
  9.     publicstaticvoid main(String args[]){ 
  10.         GlueAndStrut that = new GlueAndStrut(); 
  11.         that.go(); 
  12.     } 
  13.     void go(){ 
  14.         frame = new JFrame("Glue And Strut"); 
  15.         Container contentPane = frame.getContentPane(); 
  16.         contentPane.setLayout(new GridLayout(4,1)); 
  17.   
  18.         b1 = Box.createHorizontalBox(); 
  19.         b1.add(new JLabel("Box 1:")); 
  20.         b1.add(new JButton("Yes")); 
  21.         b1.add(new JButton("No")); 
  22.         b1.add(new JButton("Cancel")); 
  23.   
  24.         b2 = Box.createHorizontalBox(); 
  25.         b2.add(new JLabel("Box 2:")); 
  26.         b2.add(new JButton("Yes")); 
  27.         b2.add(new JButton("No")); 
  28.         b2.add(Box.createHorizontalGlue()); 
  29.         b2.add(new JButton("Cancel")); 
  30.   
  31.         b3 = Box.createHorizontalBox(); 
  32.         b3.add(new JLabel("Box 3:")); 
  33.         b3.add(new JButton("Yes")); 
  34.         b3.add(new JButton("No")); 
  35.         b3.add(Box.createHorizontalStrut(20)); 
  36.         b3.add(new JButton("Cancel")); 
  37.   
  38.         b4 = Box.createHorizontalBox(); 
  39.         b4.add(new JLabel("Box 4:")); 
  40.         b4.add(new JButton("Yes")); 
  41.         b4.add(new JButton("No")); 
  42.         b4.add(Box.createRigidArea(new Dimension(10,10))); 
  43.         b4.add(new JButton("Cancel")); 
  44.   
  45.         contentPane.add(b1); 
  46.         contentPane.add(b2); 
  47.         contentPane.add(b3); 
  48.         contentPane.add(b4); 
  49.   
  50.         frame.setSize(300,200); 
  51.         frame.setVisible(true); 
  52.     } 
//to create invisible component import java.awt.*; import javax.swing.*;  public class GlueAndStrut{ 	private JFrame frame; 	private Box b1,b2,b3,b4;  	public static void main(String args[]){ 		GlueAndStrut that = new GlueAndStrut(); 		that.go(); 	} 	void go(){ 		frame = new JFrame("Glue And Strut"); 		Container contentPane = frame.getContentPane(); 		contentPane.setLayout(new GridLayout(4,1));  		b1 = Box.createHorizontalBox(); 		b1.add(new JLabel("Box 1:")); 		b1.add(new JButton("Yes")); 		b1.add(new JButton("No")); 		b1.add(new JButton("Cancel"));  		b2 = Box.createHorizontalBox(); 		b2.add(new JLabel("Box 2:")); 		b2.add(new JButton("Yes")); 		b2.add(new JButton("No")); 		b2.add(Box.createHorizontalGlue()); 		b2.add(new JButton("Cancel"));  		b3 = Box.createHorizontalBox(); 		b3.add(new JLabel("Box 3:")); 		b3.add(new JButton("Yes")); 		b3.add(new JButton("No")); 		b3.add(Box.createHorizontalStrut(20)); 		b3.add(new JButton("Cancel"));  		b4 = Box.createHorizontalBox(); 		b4.add(new JLabel("Box 4:")); 		b4.add(new JButton("Yes")); 		b4.add(new JButton("No")); 		b4.add(Box.createRigidArea(new Dimension(10,10))); 		b4.add(new JButton("Cancel"));  		contentPane.add(b1); 		contentPane.add(b2); 		contentPane.add(b3); 		contentPane.add(b4);  		frame.setSize(300,200); 		frame.setVisible(true); 	} }

 

6.6.2执行结果

7.不使用布局管理器

7.1一般做法

a.setLayout(null)将布局管理器设置为空

b.setBounds(int x,int y,int width,int height)设置组件的位置与大小

7.2参考代码

 

[java]
  1. import java.awt.*; 
  2. import javax.swing.*; 
  3.   
  4. publicclass NullLayoutDemo{ 
  5.     private JFrame frame; 
  6.     private JButton b1,b2,b3; 
  7.   
  8.     publicstaticvoid main(String args[]){ 
  9.         NullLayoutDemo that = new NullLayoutDemo(); 
  10.         that.go(); 
  11.     } 
  12.     privatevoid go(){ 
  13.         frame = new JFrame("Null Layout Demo"); 
  14.         Container contentPane = frame.getContentPane(); 
  15.   
  16.         //set the layout as null;    
  17.         contentPane.setLayout(null); 
  18.   
  19.         //add the buttons 
  20.         b1 = new JButton("Yes"); 
  21.         contentPane.add(b1); 
  22.         b2 = new JButton("No"); 
  23.         contentPane.add(b2); 
  24.         b3 = new JButton("Cancel"); 
  25.         contentPane.add(b3); 
  26.   
  27.         //set the buttons' pos and size; 
  28.         b1.setBounds(30,15,75,20); 
  29.         b2.setBounds(150,15,75,50); 
  30.         b3.setBounds(150,100,75,20); 
  31.   
  32.         frame.setSize(300,200); 
  33.         frame.setVisible(true); 
  34.     } 
import java.awt.*; import javax.swing.*;  public class NullLayoutDemo{ 	private JFrame frame; 	private JButton b1,b2,b3;  	public static void main(String args[]){ 		NullLayoutDemo that = new NullLayoutDemo(); 		that.go(); 	} 	private void go(){ 		frame = new JFrame("Null Layout Demo"); 		Container contentPane = frame.getContentPane();  		//set the layout as null;	 		contentPane.setLayout(null);  		//add the buttons 		b1 = new JButton("Yes"); 		contentPane.add(b1); 		b2 = new JButton("No"); 		contentPane.add(b2); 		b3 = new JButton("Cancel"); 		contentPane.add(b3);  		//set the buttons' pos and size; 		b1.setBounds(30,15,75,20); 		b2.setBounds(150,15,75,50); 		b3.setBounds(150,100,75,20);  		frame.setSize(300,200); 		frame.setVisible(true); 	} }

 

7.3执行结果

转载于:https://www.cnblogs.com/myitmylife/p/3495764.html

你可能感兴趣的文章
pandas数据分析
查看>>
Redis学习笔记(2)-新建虚拟电脑,安装系统CentOSMini
查看>>
c++的map有关
查看>>
信息安全系统设计基础第六周学习总结
查看>>
SQL Injection 代码审计 1 (转)FreeBuf.COM
查看>>
ROR在NETBEANS中的环境设置
查看>>
restful_api
查看>>
U盘安装centOS和下载地址
查看>>
vmware install win8 and server2012 problem
查看>>
[产品经理手记-01] 我们到底是做什么的?
查看>>
tcp/ip五层协议
查看>>
JAVA工作方式
查看>>
python编程第二讲——变量
查看>>
poj2312--Battle City(Bfs)
查看>>
从此不再惧怕URI编码:JavaScript及C# URI编码详解
查看>>
.Net环境下调用COM组件,垃圾回收的机制和原则?
查看>>
ResourceManager高可用配置
查看>>
在shell的if条件里,判断 a>0 且 (b>0 或 c>0) ,如何编写?
查看>>
MVC控制器传递多个实体类集合到视图的方案总结
查看>>
安装logstash+kibana+elasticsearch+redis搭建集中式日志分析平台
查看>>