1.       基本的java Frame操作。

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

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

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

  1. package com.guan.visualTest.frameTest;
  2.  
  3. import java.awt.Button;
  4.  
  5. import java.awt.event.WindowAdapter;
  6.  
  7. import java.awt.event.WindowEvent;
  8.  
  9. import javax.swing.JFrame;
  10.  
  11. public class MainFrame {
  12.  
  13. public static void main(String[] args)
  14.  
  15. {
  16.  
  17. //创建frame
  18.  
  19. JFrame frame = new JFrame("welcome!!");
  20.  
  21. //调整frame的大小和初始位置
  22.  
  23. frame.setSize(400, 400);
  24.  
  25. frame.setLocation(100, 100);
  26.  
  27. //新建5个Button
  28.  
  29. Button button1 = new Button("hello1");
  30.  
  31. Button button2 = new Button("hello2");
  32.  
  33. Button button3 = new Button("hello3");
  34.  
  35. Button button4 = new Button("hello4");
  36.  
  37. Button button5 = new Button("hello5");
  38.  
  39. //将5个Button添加到frame中
  40.  
  41. frame.add(button1,"East");
  42.  
  43. frame.add(button2,"West");
  44.  
  45. frame.add(button3,"South");
  46.  
  47. frame.add(button4,"Center");
  48.  
  49. frame.add(button5,"North");
  50.  
  51. //增加窗口监听事件,使用内部类方法,并用监听器的默认适配器
  52.  
  53. frame.addWindowListener(new WindowAdapter(){
  54.  
  55. //重写窗口关闭事件
  56.  
  57. @Override
  58.  
  59. public void windowClosing(WindowEvent arg0) {
  60.  
  61. System.exit(0);
  62.  
  63. }
  64.  
  65. });
  66.  
  67. //显示窗体
  68.  
  69. frame.setVisible(true);
  70.  
  71. }
  72.  
  73. }

执行效果:

2.       AWT的布局管理器

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

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

  1. package com.guan.visualTest.frameTest;
  2.  
  3. import java.awt.BorderLayout;
  4.  
  5. import java.awt.Button;
  6.  
  7. import java.awt.CardLayout;
  8.  
  9. import java.awt.FlowLayout;
  10.  
  11. import java.awt.Frame;
  12.  
  13. import java.awt.GridLayout;
  14.  
  15. import java.awt.Panel;
  16.  
  17. import java.awt.event.ActionEvent;
  18.  
  19. import java.awt.event.ActionListener;
  20.  
  21. import java.awt.event.WindowAdapter;
  22.  
  23. import java.awt.event.WindowEvent;
  24.  
  25. public class YourFrame extends Frame{
  26.  
  27. private static final long serialVersionUID = 1L;
  28.  
  29. Panel borderLayoutPanel;
  30.  
  31. Panel cardLayoutPanel;
  32.  
  33. Panel flowLayoutPanel;
  34.  
  35. Panel gridLayoutPanel;
  36.  
  37. private void generateGridLayoutPanel() {
  38.  
  39. gridLayoutPanel = new Panel();
  40.  
  41. gridLayoutPanel.setLayout(new GridLayout(2,2));
  42.  
  43. Button button1 = new Button("button1");
  44.  
  45. Button button2 = new Button("button2");
  46.  
  47. Button button3 = new Button("button3");
  48.  
  49. Button button4 = new Button("button4");
  50.  
  51. gridLayoutPanel.add(button1);
  52.  
  53. gridLayoutPanel.add(button2);
  54.  
  55. gridLayoutPanel.add(button3);
  56.  
  57. gridLayoutPanel.add(button4);
  58.  
  59. }
  60.  
  61. private void generateFlowLayoutPanel() {
  62.  
  63. flowLayoutPanel = new Panel();
  64.  
  65. flowLayoutPanel.setLayout(new FlowLayout());
  66.  
  67. Button button1 = new Button("button1");
  68.  
  69. Button button2 = new Button("button2");
  70.  
  71. Button button3 = new Button("button3");
  72.  
  73. Button button4 = new Button("button4");
  74.  
  75. Button button5 = new Button("button5");
  76.  
  77. button1.addActionListener(new ActionListener() {
  78.  
  79. @Override
  80.  
  81. public void actionPerformed(ActionEvent e) {
  82.  
  83. ((Button)e.getSource()).setLabel("welcome ");
  84.  
  85. }
  86.  
  87. });
  88.  
  89. flowLayoutPanel.add(button1);
  90.  
  91. flowLayoutPanel.add(button2);
  92.  
  93. flowLayoutPanel.add(button3);
  94.  
  95. flowLayoutPanel.add(button4);
  96.  
  97. flowLayoutPanel.add(button5);
  98.  
  99. }
  100.  
  101. private void generateBorderLayoutPanel() {
  102.  
  103. borderLayoutPanel = new Panel();
  104.  
  105. borderLayoutPanel.setLayout(new BorderLayout());
  106.  
  107. Button button1 = new Button("South");
  108.  
  109. Button button2 = new Button("West");
  110.  
  111. Button button3 = new Button("East");
  112.  
  113. Button button4 = new Button("North");
  114.  
  115. Button button5 = new Button("Center");
  116.  
  117. borderLayoutPanel.add(button1,BorderLayout.SOUTH);
  118.  
  119. borderLayoutPanel.add(button2,BorderLayout.WEST);
  120.  
  121. borderLayoutPanel.add(button3,BorderLayout.EAST);
  122.  
  123. borderLayoutPanel.add(button4,BorderLayout.NORTH);
  124.  
  125. borderLayoutPanel.add(button5,BorderLayout.CENTER);
  126.  
  127. }
  128.  
  129. private void genrateCardLayoutPanel() {
  130.  
  131. cardLayoutPanel = new Panel();
  132.  
  133. final CardLayout cl = new CardLayout();
  134.  
  135. cardLayoutPanel.setLayout(cl);
  136.  
  137. Button button1 = new Button("black");
  138.  
  139. Button button2 = new Button("red");
  140.  
  141. ActionListener al = new ActionListener() {
  142.  
  143. @Override
  144.  
  145. public void actionPerformed(ActionEvent e) {
  146.  
  147. cl.next(cardLayoutPanel);
  148.  
  149. }
  150.  
  151. };
  152.  
  153. button1.addActionListener(al);
  154.  
  155. button2.addActionListener(al);
  156.  
  157. cardLayoutPanel.add(button1,"1");
  158.  
  159. cardLayoutPanel.add(button2,"2");
  160.  
  161. }
  162.  
  163. public YourFrame(String panelName) {
  164.  
  165. super("panelName");
  166.  
  167. generateBorderLayoutPanel();
  168.  
  169. generateFlowLayoutPanel();
  170.  
  171. generateGridLayoutPanel();
  172.  
  173. genrateCardLayoutPanel();
  174.  
  175. setLayout(new GridLayout(2,2));
  176.  
  177. add(borderLayoutPanel);
  178.  
  179. add(flowLayoutPanel);
  180.  
  181. add(gridLayoutPanel);
  182.  
  183. add(cardLayoutPanel);
  184.  
  185. setSize(800, 800);
  186.  
  187. setLocation(100,100);
  188.  
  189. addWindowListener(new WindowAdapter(){
  190.  
  191. @Override
  192.  
  193. public void windowClosing(WindowEvent arg0) {
  194.  
  195. System.exit(0);
  196.  
  197. }
  198.  
  199. });
  200.  
  201. }
  202.  
  203. public static void main(String[] args) {
  204.  
  205. YourFrame yourFrame = new YourFrame("welcome");
  206.  
  207. yourFrame.setVisible(true);
  208.  
  209. }
  210.  
  211. }

运行结果:

3.       菜单栏的实现:

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

  1. package com.guan.visualTest.frameTest;
  2.  
  3. import java.awt.FileDialog;
  4.  
  5. import java.awt.Frame;
  6.  
  7. import java.awt.Menu;
  8.  
  9. import java.awt.MenuBar;
  10.  
  11. import java.awt.MenuItem;
  12.  
  13. import java.awt.TextArea;
  14.  
  15. import java.awt.event.ActionEvent;
  16.  
  17. import java.awt.event.ActionListener;
  18.  
  19. import java.awt.event.WindowAdapter;
  20.  
  21. import java.awt.event.WindowEvent;
  22.  
  23. import java.io.FileInputStream;
  24.  
  25. import java.io.FileNotFoundException;
  26.  
  27. import java.io.IOException;
  28.  
  29. public class MenuFrame {
  30.  
  31. public static void main(String[] args) {
  32.  
  33. final Frame frame = new Frame();
  34.  
  35. frame.setSize(800,800);
  36.  
  37. frame.setLocation(100,100);
  38.  
  39. frame.addWindowListener(new WindowAdapter(){
  40.  
  41. @Override
  42.  
  43. public void windowClosing(WindowEvent e) {
  44.  
  45. System.exit(0);
  46.  
  47. }
  48.  
  49. });
  50.  
  51. final TextArea ta = new TextArea();
  52.  
  53. frame.add(ta);
  54.  
  55. //创建菜单栏
  56.  
  57. MenuBar mb = new MenuBar();
  58.  
  59. //创建菜单
  60.  
  61. Menu file = new Menu("File");
  62.  
  63. Menu edit = new Menu("Edit");
  64.  
  65. //创建菜单项
  66.  
  67. MenuItem mi1 = new MenuItem("Open");
  68.  
  69. //添加打开文件功能响应
  70.  
  71. mi1.addActionListener(new ActionListener() {
  72.  
  73. @Override
  74.  
  75. public void actionPerformed(ActionEvent e) {
  76.  
  77. FileDialog fd = new FileDialog(frame,"打开文件",FileDialog.LOAD);
  78.  
  79. fd.setVisible(true);
  80.  
  81. String fileName = fd.getDirectory()+fd.getFile();
  82.  
  83. if(fileName != null)
  84.  
  85. {
  86.  
  87. try {
  88.  
  89. FileInputStream fis = new FileInputStream(fileName);
  90.  
  91. byte[] buf = new byte[10*1024];
  92.  
  93. try {
  94.  
  95. int len = fis.read(buf);
  96.  
  97. ta.append(new String(buf,0,len));
  98.  
  99. fis.close();
  100.  
  101. } catch (IOException e1) {
  102.  
  103. e1.printStackTrace();
  104.  
  105. }
  106.  
  107. } catch (FileNotFoundException e1) {
  108.  
  109. e1.printStackTrace();
  110.  
  111. }
  112.  
  113. }
  114.  
  115. }
  116.  
  117. });
  118.  
  119. MenuItem mi2 = new MenuItem("Save");
  120.  
  121. MenuItem mi3 = new MenuItem("Other Save");
  122.  
  123. MenuItem mi4 = new MenuItem("Close");
  124.  
  125. //添加 关闭响应
  126.  
  127. mi4.addActionListener(new ActionListener() {
  128.  
  129. @Override
  130.  
  131. public void actionPerformed(ActionEvent arg0) {
  132.  
  133. System.exit(0);
  134.  
  135. }
  136.  
  137. });
  138.  
  139. MenuItem mi5 = new MenuItem("Cope");
  140.  
  141. MenuItem mi6 = new MenuItem("Paste");
  142.  
  143. file.add(mi1);
  144.  
  145. file.add(mi2);
  146.  
  147. file.add(mi3);
  148.  
  149. file.add(mi4);
  150.  
  151. edit.add(mi5);
  152.  
  153. edit.add(mi6);
  154.  
  155. mb.add(file);
  156.  
  157. mb.add(edit);
  158.  
  159. frame.setMenuBar(mb);
  160.  
  161. frame.setVisible(true);
  162.  
  163. }
  164.  
  165. }

执行结果:

4.       最后Swing的简单测试

  1. package com.guan.visualTest.frameTest;
  2.  
  3. import java.awt.BorderLayout;
  4.  
  5. import javax.swing.JButton;
  6.  
  7. import javax.swing.JFrame;
  8.  
  9. public class SwingFrame {
  10.  
  11. public static void main(String[] args) {
  12.  
  13. JFrame frame = new JFrame();
  14.  
  15. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  16.  
  17. JButton button = new JButton("ok");
  18.  
  19. frame.getContentPane().add(button,BorderLayout.WEST);
  20.  
  21. frame.setSize(800,800);
  22.  
  23. frame.setLocation(100, 100);
  24.  
  25. frame.setVisible(true);
  26.  
  27. }
  28.  
  29. }

转自: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. 收藏以下linux查看系统信息的命令

    # uname -a               # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue   # 查看操作系统版本# hostname              ...

  2. hdu2955 Robberies (01背包)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=2955">http://acm.hdu.edu.cn/showproblem.php ...

  3. SM Java实现

    [摘要] 本文主要解说"国密加密算法"SM系列的Java实现方法,不涉及详细的算法剖析,在网络上找到的java实现方法比較少.切在跨语言加密解密上会存在一些问题.所以整理此文志之. ...

  4. codeforces 486C Palindrome Transformation 贪心求构造回文

    点击打开链接 C. Palindrome Transformation time limit per test 1 second memory limit per test 256 megabytes ...

  5. java将一个或者多个空格进行分割

    public static void main(String[] args) { String s = "GET /index.html HTTP/1.1";//字符串s由“GET ...

  6. Android fragment (二)

    怎样使用fragment? 1.首先你要确定下你有多少个fragment要使用在一个activity里. 2.依据你的fragment的数量,创建继承自fragment的class.然后依据实际需求重 ...

  7. Spring Cloud(十三):Spring Cloud Sleuth服务链路追踪(zipkin)(转)

    这篇文章主要讲述服务追踪组件zipkin,Spring Cloud Sleuth集成了zipkin组件. 一.简介 Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案, ...

  8. Ajax请求的跨域(CORS)问题

    用浏览器,通过XHR(XMLHttpRequest)请求向另外一个域名请求数据时.会碰到跨域(CORS)问题. CORS:Cross-Origin Resource Sharing 什么是跨域? 简单 ...

  9. TRUNCATE 不能引发触发器

    我在使用phpmyadmin清空时发现这个问题

  10. rtems 4.11 启动流程(arm, beagle)

    请参照官方的 bsp_howto 文档,对arm来说,首先执行的文件是start.S start.S c/src/lib/libbsp/arm/shared/start/start.S 1.从 _st ...