我的第一个java_GUI程序
2013-04-19 11:21
344 查看
package com.supermap; import javax.swing.JFrame; public class SimpleFrameTest { public static void main(String [] args){ SimpleFrame frame=new SimpleFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } class SimpleFrame extends JFrame{ public SimpleFrame(){ setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT); } public static final int DEFAULT_WIDTH=300; public static final int DEFAULT_HEIGHT=200; }
Swing类位于javax.swing包中,包名javax表示这是一个java扩展包,而不是核心包,在默认情况下,框架的大小为0*0,这种框架没有什么实际意义,这里定义了一个子类SimpleFrame,它的构造器将框架大小设置为300*200像素,这是SimpleFrame和JFrame之间唯一的差别。
在每个Swing程序中,有两点技术需要强调。
首先,所有的Swing组件必须由事件调度线程(event dispatch thread)进行配置,线程将鼠标点击和键盘敲击控制转移到用户接口组件,下面代码片段是事件调度线程中的执行代码:
EventQueue.invokeLater(new Runnable{
public void run(){
statements
}
});
接下来,定义一个用关闭这个框架时的响应动作,对于这个程序而言,只让程序简单地退出即可,选择这个响应动作的语句是
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JFrame中的几个常用方法:
setLocation和setBounds方法用于设置框架的位置
setIconImage用于告诉窗口系统在标题栏,任务切换窗口等位置显示那个图标
setTitl用于改变标题栏的文字
setResizalble利用一个boolean值确定框架的大小是否允许用户改变
决定窗口大小
为了得到屏幕的大小,需要按照下列步骤操作,调用Toolkit类的静态方法getDefaulToolkit得到一个Toolkit对象,然后,调用getScreenSize方法,这个方法以Dimension对象形式返回屏幕的大小,Dimension对象同时用用有实例变量width和height保存着屏幕的宽度和高度。
ToolKit kit=ToolKit.getDefaultToolKit();
Dimension screenSize=kit.getScreanSize();
int screanWidth=screanSize.width;
int screanHeight=screanSize.height;
下面,将框架大小设定为上面取值的50%,然后,告知窗口系统定位框架
setSize(screanWidth/2,screanHeight/2);
setLocationByPlatform(true);
另外,还提供一个图标,由于图像的描述与系统有关,所以需要再次使用工具箱加载图像,然后,将这个图像设置为框架的图标。
Image img=kit.getImage("icon.gif");
setIconImage(img);
可以通过调用下列方法将框架设置为最大
frame.setExtendedState(Frame.MAIMIZED_BOTH);
在设计框架的时候,要使用下列代码将所有的组件添加到内容窗格中:
Container contentPane=frame.getContentPane();
Component c=. . . ;
contentPane.add(c);
在这里,打算将一个绘制消息的组件添加到框架中,绘制一个组件,需要定义一个扩展JComponent的类,并覆盖其中的paintComponent方法。paintComponent方法有一个Graphics类型的参数,这个参数保存着用于绘制图像和文本的设置,例如,设置的字体或当前的颜色,所有的绘制都必须使用Graphics对象,其中包含了绘制图案,图像和文本的方法。
下列代码给出了如何创建一个能够进行绘制的组件:
class MyComponent extends JComponent{
public void paintComponent(Graphics g){
code for drawing
}
}
无论何种原因,只要窗口需要重新绘图,事件处理器就会通告组件,从而引发执行所有组件的pinComponent方法。
一定不用自己调用painComponent方法,在应用陈翔需要从新绘图的时候,这个方法将被自动调用,不要人为的干预这个自动的处理过程。
如果需要强制刷新屏幕,就需要调用repaint方法,而不是paintComponent方法,它将引发采用相应配置的Graphics对象调用所有组件的paintComponentf方法。
显示文本是一种特殊的绘图,在Graphics类中有一个drawString方法,调用语句格式为:
g.drawString(text,x,y);
三角号代表是复写了父类的方法,这个paintComponent是自动调用的,不用自己调用来干预。
相关文章推荐
- 写的第一个java GUI程序--计算器。
- 我的第一个javaGUI程序
- 第一个Java SWing GUI程序
- JAVA第一个GUI程序---计算器
- 菜鸟学JAVA——第一个JAVA程序
- eclipse调试第一个java程序
- 第一个Java程序
- 我的第一个Java程序(万年历)哦~
- Java:开发环境部署,第一个Java程序
- java环境变量设置及第一个程序Hello World
- 我的第一个Java程序
- 第一个Java程序
- 用Java时写的第一个小小RPG游戏程序(第一版)
- Java知多少(6)第一个程序示例
- JAVA学习笔记——运行我的第一个程序(day01)
- 【安装eclipse, 配置java环境教程】 编写第一个java程序
- java小程序之(GUI)确认对话框JOptionPane.showConfirmDialog
- java小程序之(GUI)确认对话框控制循环
- 到现在为止,成功调试完成我的第一个Java程序,意味着我也要进行Java这一行了,请看我的代码!
- 第一个JAVA程序,hello world!