界面设计

发布时间:2020-03-10   修改时间:2020-04-28   阅读次数:7808

Java提供了类库方便图形用户界面(GUI)的开发,主要集中在javax.swing、java.awt、java.awt.event包下。

GUI程序开发分两步:界面设计和事件处理。本节介绍界面设计。

1、常用类和方法

(1)容器类:JFrame(窗口)和JPanel(面板)

(2)标签:JLabel

(3)文本框:JTextField

(4)命令按钮:JButton

(5)多行文本框:JTextArea

(6)流布局类FlowLayout:元素从左向右,从上向下排列,默认居中

(7)边界布局BorderLayout:把容器分为东西南北中五部分

(8)格布局GridLayout:把容器分成m行n列的格子

(9)容器设置布局的方法setLayout(),JFrame默认是边界布局,JPanel默认是流布局。

(10)容器添加元素的方法add()

(11)设置容器大小的方法setSize()

(12)设置容器可见的方法setVisible(true)

(13)设置窗口关闭的默认行为setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

2、程序基本框架

编写GUI程序,通常建立一个JFrame子类,在构造函数中完成界面的设计。

import javax.swing.JFrame;

public class Test {
	public static void main(String[] ar) {
		new Fr();
	}
}

class Fr extends JFrame {
	Fr() {		
		//设置窗口标题
		//设置窗口布局
		//添加元素
		//设置窗口大小
		//设置窗口可见(默认不可见)
		//设置窗口关闭行为为退出(默认隐藏)	
	}
}

3、示例

(1)流布局

import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Test {
	public static void main(String[] ar) {
		new Fr();
	}

}

class Fr extends JFrame {
	Fr() {
		this.setTitle("FlowLayout布局");
		this.setLayout(new FlowLayout());
		this.add(new JLabel("标签"));
		this.add(new JButton("命令按钮"));
		this.add(new JTextField("文本框", 10));	
		this.add(new JTextArea(8, 30));
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(400, 250);
		this.setVisible(true);

	}

}


(2)边界布局

import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class Test {
	public static void main(String[] ar) {
		new Fr();
	}
}

class Fr extends JFrame {
	Fr() {
		this.setTitle("BorderLayout布局");

		this.setLayout(new BorderLayout());
		this.add(new JTextField("NORTH"), "North");
		this.add(new JTextField("SOUTH"), "South");
		this.add(new JTextField("WEST"), "West");
		this.add(new JTextField("EAST"), "East");
		this.add(new JButton("CENTER"), "Center");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(400, 400);
		this.setVisible(true);

	}

}


(3)格布局

import java.awt.Font;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Test {
	public static void main(String[] ar) {
		new Fr();
	}
}

class Fr extends JFrame {
	Fr() {
		this.setTitle("GridLayout布局");
		this.setLayout(new GridLayout(5, 6));
		JButton[] btg = new JButton[30];
		for (int i = 0; i < 30; i++) {
			btg[i] = new JButton(i + "");
			btg[i].setFont(new Font("TimesRoman", Font.BOLD, 20));
			add(btg[i]);
		}
		this.setSize(400, 400);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);

	}

}


(4)嵌套布局

有时单一的布局不能满足需要,可以采用JPanel作为中间容器实现嵌套布局。

import java.awt.Button;
import java.awt.Checkbox;
import java.awt.FlowLayout;
import java.awt.Label;
import java.awt.TextField;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class Test {
	public static void main(String[] ar) {
		new Fr();

	}

}

class Fr extends JFrame {
	Fr() {
		this.setTitle("容器嵌套");

		this.add("North", new TextField("NORTH"));
		this.add("South", new TextField("SOUTH"));
		this.add("West", new TextField("WEST"));
		this.add("East", new TextField("EAST"));
		JPanel pa = new JPanel();
		pa.setLayout(new FlowLayout());
		pa.add(new Label("标签"));
		pa.add(new Button("命令按钮"));
		pa.add(new TextField("文本框", 10));
		pa.add(new Checkbox("复选框"));		
		this.add("Center", pa);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(400, 300);
		setVisible(true);

	}

}


隐藏菜单
界面设计
© 2019-2021 BigData1234.cn — All Rights Reserved. 鲁ICP备19007983号-1 您是第154490位访问者, 在线人数:1    教学周:1   切换背景