1.       基本的java Frame操作。

Java的图形界面的类主要包括AWT和Swing。在AWT中图形元素的父类为Component。

继承关系如下:Component->Container->Window->Frame->JFrame。(注意:Swing对AWT进行了扩展)。

下面给出一个简单的java图形程序:

package com.guan.visualTest.frameTest;

import java.awt.Button;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import javax.swing.JFrame;

public class MainFrame {

    public static void main(String[] args)

    {

       //创建frame

       JFrame frame = new JFrame("welcome!!");

       //调整frame的大小和初始位置

       frame.setSize(400, 400);

       frame.setLocation(100, 100);

       //新建5个Button

       Button button1 = new Button("hello1");

       Button button2 = new Button("hello2");

       Button button3 = new Button("hello3");

       Button button4 = new Button("hello4");

       Button button5 = new Button("hello5");

       //将5个Button添加到frame中

       frame.add(button1,"East");

       frame.add(button2,"West");

       frame.add(button3,"South");

       frame.add(button4,"Center");

       frame.add(button5,"North");

       //增加窗口监听事件,使用内部类方法,并用监听器的默认适配器

       frame.addWindowListener(new WindowAdapter(){

           //重写窗口关闭事件

           @Override

           public void windowClosing(WindowEvent arg0) {

              System.exit(0);

           }

       });

       //显示窗体

       frame.setVisible(true);

    }  

}

执行效果:

2.       AWT的布局管理器

AWT中主要有四种布局管理器:FlowLayout、GridLayout、BorderLayout和CardLayout。

下面给出这四种布局管理器的源码:

package com.guan.visualTest.frameTest;

import java.awt.BorderLayout;

import java.awt.Button;

import java.awt.CardLayout;

import java.awt.FlowLayout;

import java.awt.Frame;

import java.awt.GridLayout;

import java.awt.Panel;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class YourFrame extends Frame{

    private static final long serialVersionUID = 1L;

    Panel borderLayoutPanel;

    Panel cardLayoutPanel;

    Panel flowLayoutPanel;

    Panel gridLayoutPanel;

    private void generateGridLayoutPanel() {

       gridLayoutPanel = new Panel();

       gridLayoutPanel.setLayout(new GridLayout(2,2));

       Button button1 = new Button("button1");

       Button button2 = new Button("button2");

       Button button3 = new Button("button3");

       Button button4 = new Button("button4");

       gridLayoutPanel.add(button1);

       gridLayoutPanel.add(button2);

       gridLayoutPanel.add(button3);

       gridLayoutPanel.add(button4);     

    }

    private void generateFlowLayoutPanel() {

       flowLayoutPanel = new Panel();

       flowLayoutPanel.setLayout(new FlowLayout());

       Button button1 = new Button("button1");

       Button button2 = new Button("button2");

       Button button3 = new Button("button3");

       Button button4 = new Button("button4");

       Button button5 = new Button("button5");

       button1.addActionListener(new ActionListener() {

           @Override

           public void actionPerformed(ActionEvent e) {

              ((Button)e.getSource()).setLabel("welcome ");

           }

       });

       flowLayoutPanel.add(button1);

       flowLayoutPanel.add(button2);

       flowLayoutPanel.add(button3);

       flowLayoutPanel.add(button4);

       flowLayoutPanel.add(button5);

    }

    private void generateBorderLayoutPanel() {

       borderLayoutPanel = new Panel();

       borderLayoutPanel.setLayout(new BorderLayout());

       Button button1 = new Button("South");

       Button button2 = new Button("West");

       Button button3 = new Button("East");

       Button button4 = new Button("North");

       Button button5 = new Button("Center");

       borderLayoutPanel.add(button1,BorderLayout.SOUTH);

       borderLayoutPanel.add(button2,BorderLayout.WEST);

       borderLayoutPanel.add(button3,BorderLayout.EAST);

       borderLayoutPanel.add(button4,BorderLayout.NORTH);

       borderLayoutPanel.add(button5,BorderLayout.CENTER);

    }

    private void genrateCardLayoutPanel() {

       cardLayoutPanel = new Panel();

       final CardLayout cl = new CardLayout();

       cardLayoutPanel.setLayout(cl);

       Button button1 = new Button("black");

       Button button2 = new Button("red");

       ActionListener al = new ActionListener() {

           @Override

           public void actionPerformed(ActionEvent e) {

              cl.next(cardLayoutPanel);             

           }

       };

       button1.addActionListener(al);

       button2.addActionListener(al);

       cardLayoutPanel.add(button1,"1");

       cardLayoutPanel.add(button2,"2");

    }

    public YourFrame(String panelName) {

       super("panelName");

       generateBorderLayoutPanel();

       generateFlowLayoutPanel();

       generateGridLayoutPanel();

       genrateCardLayoutPanel();

       setLayout(new GridLayout(2,2));

       add(borderLayoutPanel);

       add(flowLayoutPanel);

       add(gridLayoutPanel);

       add(cardLayoutPanel);

       setSize(800, 800);

       setLocation(100,100);

       addWindowListener(new WindowAdapter(){

           @Override

           public void windowClosing(WindowEvent arg0) {

              System.exit(0);

           }

       });

    }

    public static void main(String[] args) {

       YourFrame yourFrame = new YourFrame("welcome");

       yourFrame.setVisible(true);

    }

}

运行结果:

3.       菜单栏的实现:

菜单栏关键的类包括MenuBar、Menu和MenuItem。下面给出测试代码:

package com.guan.visualTest.frameTest;

import java.awt.FileDialog;

import java.awt.Frame;

import java.awt.Menu;

import java.awt.MenuBar;

import java.awt.MenuItem;

import java.awt.TextArea;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

public class MenuFrame {

public static void main(String[] args) {

    final Frame frame = new Frame();

    frame.setSize(800,800);

    frame.setLocation(100,100);

    frame.addWindowListener(new WindowAdapter(){

       @Override

       public void windowClosing(WindowEvent e) {

           System.exit(0);

       }

    });

    final TextArea ta = new TextArea();

    frame.add(ta);

    //创建菜单栏

    MenuBar mb = new MenuBar();

    //创建菜单

    Menu file = new Menu("File");

    Menu edit = new Menu("Edit");

    //创建菜单项

    MenuItem mi1 = new MenuItem("Open");

    //添加打开文件功能响应

    mi1.addActionListener(new ActionListener() {

       @Override

       public void actionPerformed(ActionEvent e) {

           FileDialog fd = new FileDialog(frame,"打开文件",FileDialog.LOAD);

           fd.setVisible(true);

           String fileName = fd.getDirectory()+fd.getFile();

           if(fileName != null)

           {

              try {

                  FileInputStream fis = new FileInputStream(fileName);

                  byte[] buf = new byte[10*1024];

                  try {

                     int len = fis.read(buf);

                     ta.append(new String(buf,0,len));

                     fis.close();

                  } catch (IOException e1) {

                      e1.printStackTrace();

                  }

              } catch (FileNotFoundException e1) {

                  e1.printStackTrace();

              }

           }

       }

    });

    MenuItem mi2 = new MenuItem("Save");

    MenuItem mi3 = new MenuItem("Other Save");

    MenuItem mi4 = new MenuItem("Close");

    //添加 关闭响应

    mi4.addActionListener(new ActionListener() {

       @Override

       public void actionPerformed(ActionEvent arg0) {

           System.exit(0);

       }

    });

    MenuItem mi5 = new MenuItem("Cope");

    MenuItem mi6 = new MenuItem("Paste");

    file.add(mi1);

    file.add(mi2);

    file.add(mi3);

    file.add(mi4);

    edit.add(mi5);

    edit.add(mi6);

    mb.add(file);

    mb.add(edit);

    frame.setMenuBar(mb);

    frame.setVisible(true);

}

}

执行结果:

4.       最后Swing的简单测试

package com.guan.visualTest.frameTest;

import java.awt.BorderLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

public class SwingFrame {

public static void main(String[] args) {

    JFrame frame = new JFrame();

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JButton button = new JButton("ok");

    frame.getContentPane().add(button,BorderLayout.WEST);

    frame.setSize(800,800);

    frame.setLocation(100, 100);

    frame.setVisible(true);

}

}

转自:http://blog.sina.com.cn/s/blog_616e189f0100ne1t.html

java图形界面设计的更多相关文章

  1. 【转】java图形界面设计(AWT)

    [转自]http://blog.sina.com.cn/s/blog_616e189f0100ne1t.html 1.       基本的java Frame操作. Java的图形界面的类主要包括AW ...

  2. Java图形界面设计——substance皮肤

    http://jianweili007-163-com.iteye.com/blog/1141358 ————————————————————————————————————————————————— ...

  3. Java图形界面学习---------简易登录界面

    /** * @author Administrator * Java图形界面学习---------简易登录界面 * date:2015/10/31 */ import java.awt.BorderL ...

  4. Java 图形界面开发--图文并茂建立学生管理系统

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/50932501 冷血之心的博客) 图形用户界面(Graphics U ...

  5. Java图形界面GUI

    Java图形界面GUI 设置窗体JFrame对象 package com.Aha.Best; import javax.swing.ImageIcon; import javax.swing.JFra ...

  6. MATLAB图形界面设计(下)

    文章参考Blue Mountain https://www.cnblogs.com/BlueMountain-HaggenDazs/p/4307777.html 一.菜单设计 1.建立菜单项 (1)建 ...

  7. Sprint 2 : ios图形界面设计与代码整合

    这周我们主要focus在personal photo experience 项目的ios图形界面设计与代码整合工作上. 工作进度: 1. 图形界面设计方面:兆阳和敏龙基本已经将ios手机客户端的雏形界 ...

  8. python的re模块一些方法 && Tkinter图形界面设计 && 终止python运行函数 && python读写文件 && python一旦给字符串赋值就不能单独改变某个字符,除非重新给变量赋值

    Tkinter图形界面设计见:https://www.cnblogs.com/pywjh/p/9527828.html#radiobutton 终止python运行函数: 采用sys.exit(0)正 ...

  9. Java第5次实验提纲(Java图形界面编程)

    1. Swing与NetBeans 使用NetBeans编写简单界面.见GUI实验参考文件中的0.第06次实验(图形程序设计.事件处理与Swing).doc 题目1: Swing用户界面组件与事件处理 ...

随机推荐

  1. VC++动态链接库(DLL)编程深入浅出(二)

    好,让我们正式进入动态链接库的世界,先来看看最一般的DLL,即非MFC DLL 上节给大家介绍了静态链接库与库的调试与查看,本节主要介绍非MFC DLL. 4.非MFC DLL 4.1一个简单的DLL ...

  2. 粗略。。Java项目设计模式之笔记----studying

    设计模式 设计模式:解决这个问题的一种行之有效的思想. 设计模式:用于解决特定环境下.反复出现的特定问题的解决方式. 设计模式学习概述 ★ 为什么要学习设计模式 1.设计模式都是一些相对优秀的解决方式 ...

  3. F - 概率(经典问题)

    Description Sometimes some mathematical results are hard to believe. One of the common problems is t ...

  4. iOS的URLScheme

    一直都有接触要设置app的url scheme,从最早的facebook開始. 当时的理解是SSO用的,当授权成功之后,facebook app或者safari能够利用给定的url scheme来回调 ...

  5. scramble-string——两个字符串经过树化并旋转后是否一致、递归、动态规划

    Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrin ...

  6. Node.js 抓取电影天堂新上电影节目单及ftp链接

    代码地址如下:http://www.demodashi.com/demo/12368.html 1 概述 本实例主要使用Node.js去抓取电影的节目单,方便大家使用下载. 2 node packag ...

  7. ORA-01591错误的原因和处理方法

    http://blog.csdn.net/tclcaojun/article/details/6777022错误代码:ORA-01591 错误原因:使用了分布式事务,造成这个问题的原因很多时候都是由于 ...

  8. 提升Web性能的技巧

    1.  采用反向代理服务器(Reverse Proxy Server)来对应用进行加速和保护 其作用主要在以下三方面: 负载平衡 – 运行在反向代理服务器上的负载平衡器会在不同的不服务器  间进行传输 ...

  9. Gson把对象转成json格式的字符串

    近期在做一个java web service项目,须要用到jason,本人对java不是特别精通,于是開始搜索一些java平台的json类库. 发现了google的gson.由于之前对于protoco ...

  10. git stash 保存当前工作状态

    1. git stash   暂存当前工作状态 2. git stash list 查看暂存列表 3. git stash save 'title' 暂存工作状态并添加说明 4. git stash ...