java图形界面(GUI)

来源:互联网 发布:知乎 探险 编辑:程序博客网 时间:2024/05/20 06:29

Graphical user interface (GUI)图形用户界面

AWT  Abstract Window  Toolkit   抽象窗口工具集,第一代的JAVA GUI组件,是重量级的

Swing 不依赖于底层细节,轻量级的组件,是第二代的JAVA GUI组件,下面来详细介绍Swing

1. Swing:
•是第二代GUI开发工具
•它建立在AWT之上,但用新版本的组件替代了旧版本的组件。
•它提供了许多新的组件和相关的API

2. The Swing API 发布在:
–JDK1.2
–JFC1.1 (for use with JDK1.1)
3.The Swing API 功能是强大的,灵活的和广泛的。例如JFC 1.1 有15 public packages。
我们经常用的有两个包:
–javax.swing
–javax.swing.event

一、概览

SwingApplication 创建了四个常用的Swing components:
•a frame, or main window (JFrame)
•a panel (JPanel)
•a button (JButton)
•a label (JLabel)
二、 Swing Components 分类

•顶层容器
•中间容器
•原子组件



三、顶层容器

顶层容器
java 提供了三个顶层容器:JFrame, JDialog, 和JApplet。

顶层容器
特点:
•显示在屏幕上的每个组件都必须在一个包含继承中。每一个包含继承都有一个顶层容器作为它的根。
•每一个顶层容器都有一个content pane,它包含了顶层容器中的所有组件
•菜单在顶层容器中,但在content pane 之外。
四、JFrame

JFrame
是一个带有标题和可变大小边框的窗口。
任何一个图形界面应用程序都必须至少有一个JFrame.



下面是代码示例:

import java.awt.BorderLayout;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JFrame;import javax.swing.JLabel;public class FrameDemo{/** * @param args */public static void main(String[] args){JFrame frame=new JFrame("JFrame Demo");JLabel label=new JLabel("label");frame.addWindowListener(new MyHandler());frame.getContentPane().add(label,BorderLayout.CENTER);frame.pack();frame.setVisible(true);}}class MyHandler extends WindowAdapter{@Overridepublic void windowClosing(WindowEvent e){System.exit(0);}}


五、JDialog

JDialog是一个对话框,当你要弹出对话框的时候使用这个组件,由于这个组件比较简单,所以不举例说明。
六、JPanel


JPanel
•为其它组件提供一个容器。便于组织和显示组件。
•还可以包含子JPanel

import java.awt.Color;import javax.swing.JFrame;import javax.swing.JPanel;public class FrameWithJPanel extends JFrame{public FrameWithJPanel(String title){super(title);}public static void main(String[] args){FrameWithJPanel frame=new FrameWithJPanel("second gui");JPanel panel=new JPanel();frame.setSize(300,200);frame.setBackground(Color.blue);frame.setLayout(null);panel.setSize(100,100);panel.setBackground(Color.red);frame.add(panel);frame.setVisible(true);}}



七、创建菜单

步骤:
1.创建一个MenuBar 对象, 将其加入一个菜单容器,例如:Frame .
2.创建一个或多个Menu 对象,将其加入menu bar 对象.
3.创建一个或多个MenuItem objects,对象,将其加入相应的menu object.

import java.awt.Dimension;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;public class MenuTest{/** * @param args */public static void main(String[] args){JFrame frame=new JFrame("MenuTest");JMenuBar mb=new JMenuBar();JMenu m1=new JMenu("File");JMenu m2=new JMenu("save");JMenu m3=new JMenu("load");JMenu m4=new JMenu("quit");JMenuItem j1=new JMenuItem("hello");JMenuItem j2=new JMenuItem("hello");JMenuItem j3=new JMenuItem("hello");JMenuItem j4=new JMenuItem("hello");frame.setJMenuBar(mb);mb.add(m1);mb.add(m2);mb.add(m3);mb.add(m4);m1.add(j1);m1.add(j2);m1.add(j3);m1.add(j4);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(new Dimension(200,300));frame.setVisible(true);}}


八、JComponent Class

JComponent Class
JComponent Class API:
它从Componentand Container继承了许多方法,同时也提供了一些新的方法。它为它的继承者提供了如下常用功能:
•Customizing Component Appearance
•Setting Component State
•Handling Events
•Painting Components
•Dealing with the Containment Hierarchy
•Laying Out Components
•Getting Size and Position Information
•Specifying Absolute Size and Position

原创粉丝点击