引子:总共使用3个.java文件,建立一个简单界面编程的框架。

第1个文件:NotHelloWorldComponent.java

  1. //NotHelloWorldComponent.java
    1 import java.awt.*;
  2. import java.awt.geom.*;
  3. import javax.swing.*;
  4.  
  5. public class NotHelloWorldComponent extends JComponent {
  6. public static final int MESSAGE_X = 75;  //消息最左上角坐标
  7. public static final int MESSAGE_Y = 75;

  8.     //定义此界面的默认尺寸
  9. private static final int DEFAULT_WIDTH = 300;  
  10. private static final int DEFAULT_HEIGHT = 300;

  11.     //paintComponent()会被系统自动调用,并且系统会自动传递一个Graphics对象给它
  12. public void paintComponent(Graphics g){
  13. //将g转型成Graphics2D对象,作为画笔,用来画2D图形
  14. Graphics2D g2 = (Graphics2D)g;

  15.       //创建一个Rectangle2D矩形对象
          //如果有其他图形需要绘制,可以先在此处定义,再在下个部分用g2作为画笔画出来
  16. double leftX = 50;
  17. double topY = 50;
  18. double width = 200;
  19. double height = 150;
  20. Rectangle2D rect = new Rectangle2D.Double(leftX, topY, width, height);

  21.       //用画笔g2来绘制文字和矩形图形
  22. g2.drawString("Not a hello, World program", MESSAGE_X, MESSAGE_Y);  
  23. g2.draw(rect);
  24.  
  25. }

  26.     //覆盖此函数,设置首选的尺寸大小
  27. @Override
  28. public Dimension getPreferredSize() {
  29. return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT);
  30. }
  31. }

第2个.java文件:NotHelloWorldFrame.java

  1. import javax.swing.JFrame;
  2.  
  3. public class NotHelloWorldFrame extends JFrame {
  4. public NotHelloWorldFrame(){
  5. add(new NotHelloWorldComponent());
  6. pack(); //使JFrame的大小适合其包含的组件的大小
  7. }
  8. }

说明:JFrame是一个框架类,用来包含JPanel和JComponent。

第3个.java文件:NotHelloWorld.java

  1. import java.awt.EventQueue;
  2.  
  3. import javax.swing.JFrame;
  4.  
  5. public class NotHelloWorld {
  6. public static void main(String[] args) {
  7. EventQueue.invokeLater(new Runnable() {  //使用匿名内部类技术,创建一个线程,用线程来创建窗口程序
  8. public void run() {
  9. JFrame frame = new NotHelloWorldFrame();
  10. frame.setTitle("NotHelloWorldFrame");    
  11. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //关闭窗口的同时,程序结束,避免内存垃圾
  12. frame.setVisible(true);    //开启窗口可见
  13. }
  14. });
  15. }
  16. }

说明:关于匿名内部类的简单使用,参见此博客:http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html

Java界面编程-建立一个可以画出图形的简单框架的更多相关文章

  1. matlplotlib根据函数画出图形

    根据函数画出函数的轨迹 import matht = np.linspace(0, math.pi, 1000)x = np.sin(t)y = np.cos(t) + np.power(x, 2.0 ...

  2. OpenGL编程-第一个程序-画出一个正方形

    账号是:qq876.......   pwd:bky.13....................... 程序如下 #include <GL/glut.h> // #pragma comm ...

  3. Java界面编程—API

    Java 的 GUI 提供的对象都存在 java.awt 和 java.swing 两个包中. awt :Abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能 ...

  4. Java界面编程—事件监听机制

    组件首先要先注册事件处理器,当用户单击组件.移动鼠标或者敲击键盘时都会产生事件(Event),一旦有时间发生,应用程序就会做出对该事件的响应,这些组件就是事件源(Event source). 接受.解 ...

  5. java界面编程(3) ------ 控制布局

    本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 在java 中,组件放置在窗口上的方式可能与其它的GUI系统都不同样.首先,它全 ...

  6. Java 界面编程【03】事件监听

    当你把界面都设计好了,总需要添加相应的执行动作给组件,在JAVA中有相应的时间处理机制,叫做“监听器”,给组件添加相应执行动作的过程叫做“注册”,其中的“监听器”是一个接口,里面包含了相应的执行函数, ...

  7. Java界面编程—布局管理

    布局是指容器中组件的排列方式 常用的布局管理器 布局管理器名称 所属类包 说明 FlowLayout(流式布局) java.awt 组件按照加入的先后顺序.按照设置的对齐方式从左向右排列,一行排满后到 ...

  8. Java 界面编程【02】事件注册

    聪明出于勤奋,天才在于积累.——华罗庚 对上次的三个问题的个人理解: 1) 程序首先是从main函数开始执行的,假设main 函数不是 static ,就要先实例化这个类,然后调用 main 方法,这 ...

  9. java界面编程(8) ------ 组合框(下拉列表)

    本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 与一组单选button的功能类似,组合框(下拉列表)也是强制用户从一组可能的元素 ...

随机推荐

  1. jsp判断为空用not empty

    试过 !='' 不管用,只好百度,现在知道了 <c:if test="${not empty pos.requireDegreeName }"> ${pos.requi ...

  2. EFDB 基本规范&知识

    public abstract class AccountRole //这是继承类型 { [Key] public int ID { get; set; } public bool isDisable ...

  3. 规范 : 过程 : login cookies sessionTimeOut

    规范 用户登入网站将得到一个cookies,如果用户有2个account,各别登入admin page 和 client page,是会得到2个cookies. 在reload page时,后台会得到 ...

  4. 用JS常规方法是否离开当前页面

    该方法在 关闭页面时 会提示 <script type="text/javascript"> var DispClose = true; function CloseE ...

  5. apk反编译方式

    一.Apk反编译得到Java源代码 下载上述反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具. apk反编译工具de ...

  6. [Selenium With C#学习笔记] Lesson-06 单选按钮

    作者:Surpassme 来源:http://www.jianshu.com/p/08ee1929875f 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢. 单选按钮通常用在需要 ...

  7. mysql数据库的中文乱码问题的解决

    今天终于解决了数据库中文乱码的问题,分享出来让更多的人作为参考,我们进入主题: 如果在搭建mysql数据库的时候没有设置它的编码格式,在以后的开发中,中文乱码会是一个令人头疼的问题,所以我在这里分享一 ...

  8. Python 引用、浅拷贝、深拷贝解析

    引用 Python是动态数据类型的语言,故在对变量进行赋值时是不用制定变量类型的. 或者说,你可以把变量赋值的过程,当作是贴一个标签,去引用该数据. 看下面的例子: In [54]: a=4 In [ ...

  9. .NET 三层架构

    三层架构简介: 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer).业务逻辑层(Business Lo ...

  10. Spark_总结五

    Spark_总结五 1.Storm 和 SparkStreaming区别 Storm                      纯实时的流式处理,来一条数据就立即进行处理 SparkStreaming ...