图形界面应用程序
java中各种图形组件如按钮对话框都是Component类的子类,放在容器(Container)中。java中的容器有两类:窗口Window和面板Panel。窗口是可以独立存在的容器,Panel必须放在其他容器中,如窗口或浏览器窗口中。
窗口有两类,一类是具有标题栏、最大化、最小化、按钮的Frame,另一类是对话框Dialog。
使用Frame的主要步骤是:
import java.awt.*;
Frame fr=new Frame(“MyTest”);
fr.setSize(500,500);
fr.pack(); //自动调整窗口大小
fr.setVisible(true);
其他,fr.setBackGround(Color.blue); 设置背景颜色
常用图形组件
按钮 Button
 Button x=new Button(“abcd”);
 Frame f=new Frame(“test”);
 Panel p=new Panel();
 p.add(x);   f.add(p);  f.pack();  f.setVisible(true);
复选框 Checkbox
Checkbox c=new Checkbox(“test”,true); 第二个参数表示默认选中,否则为false
单选项 Radio
CheckboxGroup g=new CheckboxGroup();
Checkbox c=new Checkbox(“test”,g,true); //添加了一个组分类g
下拉列表框
Choice c=new Choice();
c.addItem(“test”);
列表框
跟下拉列表框类似,只是可以一次显示多行,自动生成滚动条。
List t=new List(4,true); 4表示行数,true表示支持多选。
t.add(“test”); //添加超过四个时,自动生成滚动条。
对话框
对话框和Frame都是窗口类型,对话框和Frame相关联,但不是放在Frame中。
Frame f=new Frame(“MyFrame”);
Dialog d=new Dialog(f, “Test” ,true);
第一个参数为与之相关联的Frame,第三个参数表示对话框处理完毕才可以和Frame交互。就像Word软件,选择“文件/打开”之后出现的对话框。
文件对话框
文件对话框显示一个对话框让用户选择文件,该对话框用于点击打开文件时调用。语法结构为:
FileDialog d=new FileDialog(f, “Test”);
用户选择了哪个文件可由对话框方法getDirectory()和getFile()获得。返回为字符串。
如:String s=d.getDirectory()+d.getFile();
标签
Label l=new Label(“test”);
滚动面板
对于较大的图形界面,可以放在滚动面板中,然后将滚动面板放在Frame中。
Frame f=new Frame(“MyFrame”);
ScrollPane sp=new ScrollPane();
Panel p=new Panel();
f.add(sp);
sp.add(p);
单行文本框
TextField t=new TextField(String s,int length);
多行文本输入框
TextArea t=new TextArea(String s,int row,int width);
菜单
在Frame中设置菜单栏-》菜单栏中添加菜单-》菜单中添加菜单项。
Frame f=new Frame(“Menu”);
MenuBar mb=new MenuBar();
Menu m1=new Menu(“File”);
MenuItem m11=new MenuItem(“Open”);
MenuItem m12=new MenuItem(“Save”);
m1.add(m11);
m1.add(m12);
mb.add(m1);
f.setMenuBar(mb);
分隔符:m1.addSeparator();
菜单选中:如自动换行。使用CheckBoxMenuItem.
快捷菜单(常用于右键单击)
对于不需要放在固定位置的快捷菜单,可以使用PopupMenu来实现,和普通菜单Menu的使用方法一样,可以添加各种菜单项、选择项、分隔符等。使用show()方法可以指定快捷菜单的显示位置。通常读取鼠标右击的位置来确定快捷菜单在何处显示。
Frame f=new Frame(“Menu”);
PopupMenu m1=new PopupMenu(“File”);
MenuItem m11=new MenuItem(“Open”);
MenuItem m12=new MenuItem(“Save”);
m1.add(m11);
m1.add(m12);
f.add(m1);   m1.show(f,20,50); 第一个参数是各种组件,后面两个参数是快捷菜单相对于第一个组件的相对显示位置。
布局
流布局
流布局从左到右,自上而下的顺序放置组件。其使用方式是:
其语法结构为:
FlowLayout t=new FlowLayout();
或FlowLayout t=new FlowLayout(FlowLayout.RIGHT);
或FlowLayout t=new FlowLayout(FlowLayout.LEFT,10,20);
后边两个参数表示组件左右、上下间隔多少像素。
使用:f.setLayout(t); 或者f.setLayout(new FlowLayout());
边界布局
 
网格布局
 
卡片布局
 
网格包布局
 
绘图操作
Java中使用Graphics对象可以进行各种绘图操作。定义Panel的子类,重写paint()方法。在该方法的参数中只有一个Graphics对象。窗口刷新时自动执行paint()方法。
import java.awt.*;
public class TestDraw extends Panel{
public static void main(String args[]){
  Frame f=new Frame(“My Drawing”);
  TestDraw mc=new TestDraw();
  f.add(“Center”,mc);
  f.setSize(150,150);
  f.setVisible(true);
}
public void paint(Graphics g){
  System.out.println(“repainted”);
  Font f=new Font(“TimesRoman”,Font.BOLD,18);
  g.setFont(f); //设置字体
  g.drawString(“hello”,10,50); //写hello
  g.drawOval(50,50,30,30);  //画椭圆
  g.fillRect(100,100,20,30);  //画有填充的长方形
}
}
事件处理
用户单击按钮,自动产生的对象为ActionEvent,自动执行ActionPerformed()方法;按动键盘,自动产生的对象为KeyEvent,自动执行KeyPressed(),KeyReleased(),KeyTyped()方法。
按钮事件处理
对于鼠标单击按钮的事件,编写事件处理器时需要实现的接口为:ActionListener,该接口中只有一个方法需要实现:ActionPerformed(ActionEvent e)。程序可以如下:
import java.awt.event.*;
class xx implements ActionListener{
public void actionPerformed(ActionEvent e){
  System.out.println(e.getActionCommand()); //可以获得用户单击的按钮所对应的字符串。
}
}
按钮添加监听:button.addActionListener(事件处理器);
键盘处理事件
import java.awt.*;
import java.awt.event.*;
public class XX implements KeyListener{ //接口
 public void keyTyped(KeyEvent ev){  //接口方法
char c=ev.getKeyChar();
System.out.println(“keyTyped”+c);
}
public void keyPressed(KeyEvent ev){
 ……………
}
public void keyRealeased(KeyEvent ev){
 ………………..
}
}
鼠标事件的处理
实现的接口有两类:一类是MouseListener,它处理鼠标单击以及鼠标进出操作;另一类是MouseMotionListener,它处理鼠标拖动和移动操作。使用时可以实现其中的一个接口,也可以两个都实现。
对于MouseMotionListener,拖动鼠标将执行mouseDragged(),移动鼠标将执行mouseMoved()。
对于MouseListener,鼠标按钮按下将执行mousePressed(),鼠标按钮释放将执行mouseReleased(),鼠标按钮单击将执行mouseClicked(),鼠标进入组件所在区域将执行mouseEntered(),鼠标离开组件将执行mouseExited()。
方法的参数为MouseEvent,通过其getX()和getY()方法可以获得鼠标的位置,getClickCount()方法可获得单击次数,通过paramString()方法可以获得各种参数,包括单击的模式,由此可判断鼠标操作使用的是左按钮还是右按钮或中间按钮。
import java.awt.*;
import java.awt.event.*;
public class xx implemets MouseListener,MouseMotionListener{
 对某一组件添加监听。
 public void mouseMoved(MouseEvent ev){
  int x=ev.getX();
  int y=ev.getY();
  System.out.println(“mouseMoved”+x+y);
}
………………………….其它方法类似
}
窗口事件处理
接口:WindowListener。
方法:打开执行windowOpened(),单击窗口右上角关闭按钮执行windowClosing(),单击最小化按钮执行windowIconified()和windowDeactivated(),鼠标单击其他窗口也会执行windowDeactivated(),由最小化恢复会执行windowDeiconified()和windowActivated(),当前窗口为其他窗口时单击该窗口,也会执行windowActivated(),窗口被关闭,则执行windowClosed().
方法参数:WindowEvent e
选项事件的处理
单选按钮、复选框、下拉列表、列表框、菜单中每个选项或菜单项都可以使用选项事件进行处理。
接口:ItemListener,每当选择某个选项,便会自动执行itemStateChanged()方法,该方法的参数为ItemEvent。其getItem()方法可以获得选项对应的字符串,getStateChange()方法可以获得选项是选中(值为ItemEvent.SELECTED)还是未选中(值为ItemEvent.DESELECTED)。
添加监听:.addItemListener(this);
动作事件的处理(文本框)
ActionListener除了用于鼠标单击按钮外,单行文本框中的回车、列表框中双击选择某个选项也可以用其处理。
import java.awt.*;
import java.awt.event.*;
class xx implements ActionListener{
 TextField t=new TextField(“you can enter here”,35);
 t.addActionListener(this);  //即单行文本框可以自动监听。
 ……………
 public void actionPerformed(ActionPerformed e){
String s=t.getText();
System.out.println(s);
}
}
注意:对于多行文本框TextArea,不能自动监听,可以添加按钮来实现检查和提交功能。
多个事件处理器
如果对一个组件添加多个事件处理器,则需要对每一个处理器创建一个类。
import java.awt.*;
import java.awt.event.*;
public class TwoListener{
 Button b=new Button(“ok”);
 b.addActionListener(new xx());
 b.addActionListener(new yy());
}
public class xx implements ActionListener{
 public void actionPerformed(ActionEvent t){
 System.out.println(“First”+t.getActionCommand);
}
}
public class yy implements ActionListener{
 public void actionPerformed(ActionEvent t){
 System.out.println(“Second”+t.getActionCommand);
}
}
Adapter类
事件处理器实现的接口中往往有多个方法要实现,而某个具体程序用到的可能只是其中的一个,但实现接口时根据接口的语法规则必须把所有方法都实现,因此程序中不使用的方法要写空语句。
为了简化程序,java中预定义了一些特殊的类,这些类应经实现了相应的接口,方法中已经写上空语句,使用时只要将事件处理器作为子类(使用extends,而不是implements)即可。命名规则:只要将接口中的Listener改为Adapter即可。对于只有一个方法需要实现的接口,没有Adapter。
public class xx extends WindowAdapter implements WindowListener{
}
通过鼠标双击直接运行java程序
DOS下可以用javac *.java来编译java文件,使用java 类名 来执行程序。
制作jar文件
双击直接运行java程序。
比如有MyFrame.java一文件。
javac MyFrame.java编译生成MyFrame.class
然后做一个配置文件,随意起一个文件名如conf.txt,该文件中输入一行内容:
Main-Class: MyFrame
注意:文件开头顶格,不可有空行空格,Main-Class:后有一空格。该配置文件给出了双击jar文件时运行其中的哪个类。
然后输入如下命令制作jar文件:
jar cmf conf.txt MyFrame.jar *.class
这样将创建MyFrame.jar,以后只要双击即可执行。
使用批处理制作
运行jar文件
java –jar MyFrame.jar

java图形界面应用程序(转)相关推荐

  1. java图形界面重写坐标_重写自由软件和计算机图形的历史

    java图形界面重写坐标 您还记得上世纪90年代初大多数屏幕保护程序都显示飞扬的3D金属徽标的日子吗? 你有一个吗? 在本文中,我想回顾一下过去,并简要回顾计算机图形学(CG)从研究实验室过渡到每个人 ...

  2. Java图形编程实验总结_实验二java图形界面编程2015级.doc

    实验二java图形界面编程2015级.doc 实验二JAVA图形界面编程一.实验目的熟悉JAVA运行环境,编程掌握JAVASWING组件的图形界面编程.二.实验环境微机,软件MYECLIPSE,JDK ...

  3. JAVA图形界面:加法计算器

    JAVA用于开发图形界面应用的 SWING 组件包功能强大,使用方便.接下来我们就使用其写一个简单的图形界面小程序:加法计算器. 第一步: 首先得构思,我们要做什么.加法计算器的话,做出来之后大概是这 ...

  4. java界面布局举例,java图形界面实例

    java写一个图形程序,让数组输出在图形界面上 代码怎么写?别那么复杂的. 已把程序文件打包上传了,并附上运算结果图. import javax.swing.*;import java.awt.*;i ...

  5. Java图形界面编程模拟ATM自助取款系统

    本人学习Java时一直想做一个图形界面的程序,所以利用闲暇时间,做了一个Java图形界面编程模拟ATM自助取款系统,界面简洁漂亮,基本功能ATM功能实现. 程序初始时 考号:123456 密码:123 ...

  6. Java 图形界面基础

    Java图形界面基础 当你开始验证自己的PC的JDK环境是否配置完成的时候有没有想过这个窗体是怎么做出来的呢? 用几句简单的Java语言就可以做出这样的窗体,不信我可以写给给位看. import ja ...

  7. java图形界面多线程_多线程编程、Java I/O系统和Java图形界面编程

    多线程编程: 一个正在运行的程序通常称为一个进程,每一个任务称为一个线程,中能够在一个程序内运行多线程的程序称为多线程程序. 线程与进程的区别:①每个进程都需要操作系统为其分配独立的内存空间: ②而同 ...

  8. Java图形界面开发利器WindowBuilder

    自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

  9. Java图形界面编程

    一.Java图形用户界面(gui)介绍 1.Java GUI简介   图形用户界面(Graphics User Interface,GUI,图形化的用户接口)是用户与程序交互的窗口,比命令行的界面更加 ...

最新文章

  1. 学术前沿 | 图像质量量化评估标准综述
  2. 复合梯形公式与复合辛普森公式matlab_【IBE】关于电缆桥架的安装,一定要知道的两个公式!...
  3. ​内核调试技巧--systemtap定位丢包原因
  4. K8S从懵圈到熟练 - 我们为什么会删除不了集群的命名空间?
  5. Jackson使用详解
  6. java字符类型的返回值,Java字符类isWhitespace()方法及示例
  7. 【matlab】直方图(hist函数的应用)
  8. C++中引用变量的探究
  9. PMP和PRINCE2到底有什么区别?哪个含金量更高?
  10. VBA代码宝(列表框)20220402
  11. 虚拟机实现远程桌面连接
  12. CDH 使用内部Parcel仓库
  13. C++上机实验六第2题
  14. JavaScript实现React实现网页转换成图片截屏下载
  15. nginx 启动、重启、关闭命令
  16. 畅言插件,http换成https失效了
  17. 国企计算机技术岗面试题目,国企历年经典面试试题+答案(二)
  18. C++ rand() 随机函数的用法
  19. 247、(案例)javaScript对象--注册表单升级,添加表单校验(利用正则表达式)
  20. 字蛛压缩ttf字体(前端常用)

热门文章

  1. 在Eclipse的CDT:配置和开发Qt5工程
  2. mysql+零时数据结构,MySql主要索引数据结构
  3. 2021-03-10 Python多线程爬虫快速批量下载图片
  4. 2020-12-03 matlab 反馈函数 feedback
  5. python中词云图怎样变成特殊图案_如何利用python画出一个多变的词云图?(1)...
  6. alpha beta 滤波_不同Alpha-Beta滤波算法的精度分析及改进
  7. Python 一种接触就容易爱上的语言一
  8. sublime按ctrl+B不能运行
  9. happens-before俗解
  10. 图普科技招聘有关深度学习的解题?