zoukankan      html  css  js  c++  java
  • java图形界面应用程序(转)

    java图形界面应用程序

    图形界面应用程序

    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

    原文出处:http://blog.sina.com.cn/s/blog_4d3833cf0100gk06.html

  • 相关阅读:
    知识点:定义input type=file 样式的方法(转)
    笔记:认识 head 标签 待 更新中……
    检讨:关于上班迟到那么‘ 一两分钟 ’的事儿
    js--局部变量
    数十万互联网从业者的共同关注!
    js--javascript中字符串常用操作总结、JS字符串操作大全
    JavaScript中浏览器兼容问题
    js--性能优化(转)
    js-知识点
    让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法--(转)
  • 原文地址:https://www.cnblogs.com/andysd/p/2508524.html
Copyright © 2011-2022 走看看