图形界面应用程序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 复选框 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); 布局流布局 流布局从左到右,自上而下的顺序放置组件。其使用方式是: 其语法结构为: 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[]){ } public void paint(Graphics g){ } } 事件处理用户单击按钮,自动产生的对象为ActionEvent,自动执行ActionPerformed()方法;按动键盘,自动产生的对象为KeyEvent,自动执行KeyPressed(),KeyReleased(),KeyTyped()方法。 按钮事件处理 对于鼠标单击按钮的事件,编写事件处理器时需要实现的接口为:ActionListener,该接口中只有一个方法需要实现:ActionPerformed(ActionEvent e)。程序可以如下: import java.awt.event.*; class xx implements ActionListener{ public void actionPerformed(ActionEvent e){ } } 按钮添加监听:button.addActionListener(事件处理器); 键盘处理事件 import java.awt.*; import java.awt.event.*; public class XX implements KeyListener{ //接口 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{ } ………………………….其它方法类似 } 窗口事件处理 接口: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{ String s=t.getText(); System.out.println(s); } } 注意:对于多行文本框TextArea,不能自动监听,可以添加按钮来实现检查和提交功能。 多个事件处理器 如果对一个组件添加多个事件处理器,则需要对每一个处理器创建一个类。 import java.awt.*; import java.awt.event.*; public class TwoListener{ } public class xx implements ActionListener{
} } public class yy implements ActionListener{
} } 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 |
|