Java图形界面设计

本文详细介绍了Java图形用户界面(GUI)的设计,包括容器如JFrame和JPanel,以及各种布局管理器,如FlowLayout、BorderLayout、GridLayout、CardLayout和BoxLayout的使用方法和示例代码,展示了如何通过布局管理器控制组件的位置和大小。
摘要由CSDN通过智能技术生成

一、总述

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

Swing具有状态的组件。

二、容器

1.顶层容器:

JFrame、JApplet、JDialog 和 JWindow

2.JFrame创建的一个程序

2.1代码

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代码

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 的三种构造方法

			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参考代码

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构造函数

			BorderLayout()
 			BorderLayout(int,int)

3.3示例代码

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总述

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

  • 15
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值