java gui 界面_JAVA中的GUI界面(第十周)

JAVA中的GUI界面

现在来说一下JAVA中的GUI( Graphical User

Interface)界面,这是本周还没有学习过的问题,另外我要说的是以后的每周博文都抽出一到两篇还没有学习的课程作为预习后所写博文,从本周开始全面执行这种方式,本周先简要介绍JAVA中的图形界面,在开发JAVA中的图形界面时有三个包是我们要用到的,它们是:AWT、SWing、SWT/JFace。其中现阶段我们主要是用SWing,AWT基本上不怎么用了,而SWT/JFace可能在J2EE高级阶段会用到(注意:SWT/JFace不是JAVA标准的一部分)。

一、AWT组件:

AWT(Abstract Windowing

Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类被称为组件(components)。

抽象窗口工具包 (Abstract Windowing Toolkit)

(AWT)是Java的平台独立的窗口系统,图形和用户界面器件工具包。AWT是Java基础类

(JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API。

AWT提供了Java Applet和Java

Application中可用的用户图形界面GUI中的基本组件(components)。由于Java是一种独立于平的程序设计语言,但GUI却往往是依赖于特定平台的,Java采用了相应的技术使得AWT能提供给应用程序独立于机器平台的接口,这保证了同一程序的GUI在不同机器上运行具有类似的外观(不一定完全一致)。

抽象窗口工具包AWT (Abstract Window Toolkit) 是 API为Java 程序提供的建立图形用户界面GUI

(Graphics User

Interface)工具集,AWT可用于Java的applet和applications中。它支持图形用户界面编程的功能包括:用户界面组件;事件处理模型;图形和图像工具,包括形状、颜色和字体类;布局管理器,可以进行灵活的窗口布局而与特定窗口的尺寸和屏幕分辨率无关;数据传送类,可以通过本地平台的剪贴板来进行剪切和粘贴。

二、Swing组件:

Java Swing是Java Foundation

Classes(JFC)的一部分,它是试图解决AWT缺点的一个尝试。从这一点上来说,Swing可以说是站在前人(以AWT的表现,实在很难称之为巨人)的肩膀上了。SWING解决了AWT的很多缺点。相对于AWT,

Swing是轻量级元件。SWING

提供许多比AWT更好的屏幕显示元素。它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT。它们是JFC的一部分。它们支持可更换的观感和主题(各种操作系统默认的特有主题),然而Swing不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们。这意味着你可以在任意平台上使用JAVA支持的任意观感。轻量级元件的缺点则是执行速度较慢,优点就是可以在所有平台上采用统一的行为。

三、SWT/JFace组件:

SUN不接纳SWT/JFace作为Java中的一种图形API标准,但它虽然借着Eclipse的优异表现,以不可阻挡之势向前发展着。终于可以用SWT/JFace轻松的开发出高效率的GUI程序,且拥有标准的Windows外观,Eclipse软件就是基于SWT/JFace构建的,大家看看Eclipse3.2就知道SWT有多么的棒。

解释一下SWT与JFace的区别,JFace其实是在SWT的基础上,采用MVC模式进行了封装而形成的一个新的类库,这一封装,大大简化了采用SWT开发Java图形用户界面的难度。在SWT推出后不久,出现了一个名为SWT

Designer的Eclipse插件,使用该插件可以像采用Visual Studio

.NET开发Window图形用户界面一样简单,可以采用可视化拖拽的方式进行。不要以为这是一个很小的进步,要知道用Java写GUI程序能够简单到这种程度,这在以前可是想都不敢想的事情。.NET平台之所以成功,很大程度上与它的IDE——Visual

Studio .NET,优异的表现有关,而Visual Studio .NET最值得称道的就是它的可视化设计模式。

SWT/JFace直接调用了操作系统的图形库,从而使得Java应用程序的Look & Feel

与操作系统的习惯完全一致;更为重要的是,SWT/JFace采用有限调用本地方法(控件),只有当本地找不到所需要的控件时,才进行模拟。对本地方法的直接调用大幅度的提高了基于SWT/JFace的Java应用程序的运行速度。相信使用过JBuilder和Eclipse的开发人员会有切身的体会。一般来说,基于Swing的JBuilder需运行在1G以上内存的机器上,而Eclipse则可以在512M内存的机器上跑的很欢。SWT/JFace具有比AWT更为丰富的控件,比Swing更为快捷的速度。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
javaGUI图形界面 public class login extends JFrame { private JComboBox nameJComboBox; private JPanel userJPanel; private JLabel pictureJLabel; private JButton okJButton,cancelJButton; private JLabel nameJLabel,passwordJLabel,note; private JPasswordField passwordJPasswordField; private String name1; private String password1; private String user; private ImageIcon myImageIcon; public login( ) { createUserInterface(); // 调用创建用户界面方法 } private void createUserInterface() { Container contentPane = getContentPane(); contentPane.setLayout( null ); userJPanel = new JPanel(); userJPanel.setBounds( 35, 120, 300, 96 ); userJPanel.setBorder(BorderFactory.createEtchedBorder() ); //显示一圈边儿 userJPanel.setLayout( null ); contentPane.add( userJPanel ); nameJComboBox = new JComboBox(); nameJComboBox.setBounds( 100, 12, 170, 25 ); nameJComboBox.addItem( "admin" ); nameJComboBox.addItem( "aloie" ); nameJComboBox.setSelectedIndex( 0 ); nameJComboBox.setEditable(true); userJPanel.add( nameJComboBox ); pictureJLabel=new JLabel(); pictureJLabel.setBounds(45,0,380,118); pictureJLabel.setIcon(new ImageIcon("pic.gif")); contentPane.add(pictureJLabel); nameJLabel=new JLabel("姓 名:"); nameJLabel.setBounds(20,12,80,25); userJPanel.add(nameJLabel); passwordJPasswordField=new JPasswordField(); passwordJPasswordField.setBounds(100,60,170,25); userJPanel.add(passwordJPasswordField); passwordJLabel=new JLabel("密 码:"); passwordJLabel.setBounds(20,60,80,25); userJPanel.add(passwordJLabel); note=new JLabel("密码与用户名相同"); note.setBounds(0,295,180,25); add(note); okJButton=new JButton("登 陆"); okJButton.setBounds(60,250,80,25); contentPane.add(okJButton); okJButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { okJButtonActionPerformed(event); } } ); cancelJButton=new JButton("取 消"); cancelJButton.setBounds(210,250,80,25); contentPane.add(cancelJButton); cancelJButton.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent event ) { System.exit(0); //退出登陆 } } ); setTitle( "登陆窗口" ); setSize( 380, 350 ); setResizable( false ); //将最大化按钮设置为不可用 } private void okJButtonActionPerformed( ActionEvent event ) { //okJButton响应事件,检查用户名和密码的匹配 name1= nameJComboBox.getSelectedItem().toString(); if (name1.equals("admin") ) { if (passwordJPasswordField.getText().equals("admin")) { showNewWindow(); setVisible( false); } else { JOptionPane.showMessageDialog( this,"密码错误,拒绝登陆", "密码错误 !", JOptionPane.ERROR_MESSAGE ); } } else if (name1.equals("aloie")) { if ( passwordJPasswordField.getText().equals("aloie") ) { showNewWindow(); setVisible(false); } else { JOptionPane.showMessageDialog( this,"密码错误,拒绝登陆", "密码错误 !", JOptionPane.ERROR_MESSAGE ); } } } public void showNewWindow() { JFrame jf=new JFrame("main Frame"); jf.setSize(500,400); jf.setVisible(true); jf.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } public static void main( String[] args ) { JFrame.setDefaultLookAndFeelDecorated(true); login mylogin = new login( ); mylogin.setVisible( true ); mylogin.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值