使用Java的优势在于网络应用方面,但Java也提供了强大的用于开发桌面程序的API,它们包含在javax.swing包中.使用这个包可以编写简单的Java桌面应用程序.
Java的javax.swing包提供了许多用来设计GUI的组件类,在学习GUI编程时,需要掌握两个概念:容器类(Container)和组件类(Component),以下是GUI编程中经常提到的基本知识点.
· Java把Component类的子类或间接子类创建的对象称为一个组件.
· Java把Container的子类或间接子类创建的对象称为一个容器.
· 可以向容器中添加组件.Container类提供了一个public方法add(),一个容器可以调用这个方法将组件添加到该容器中.
· 容器调用removeAll()方法可以移除掉容器中的全部组件,调用remove(Component c)方法可以移除掉容器总参数c指定的组件.
· 容器本身也是一个组件,因此可以把一个容器添加到另一个容器中实现容器的嵌套.
· 每当容器添加新的组件或移除组件时,应当让容器调用validate方法,以保证容器中的组件能正确显示出来.
接下来用Java编写一个简单的桌面程序。
一个Java的应用程序需要使用JFrame类的实例来提供一个底层容器和操作系统进行交互,当需要一个窗口时,使用JFrame或其子类创建一个对象。窗口也是一个容器,可以向窗口添加组件。需要注意的是,窗口默认被系统添加到显示器屏幕上,一次不允许讲一个窗口添加到另一个容器中。
1_1、WindowMenu创建一个带窗口的菜单
WindowMenu win = new WindowMenu(\”俄罗斯方块\”,200,30,900,1000);
1_2、菜单条、菜单、菜单项
· 菜单条
JComponent类的子类JMenubar负责创建菜单条,即JMenubar的一个实例就是一个菜单条。JFrame类中有一个将菜单条放置到窗口中的方法: setJMenuBar (JMenuBar bar);
· 菜单
JComponent类的子类JMenu负责创建菜单项,即JMenu的一个实例就是一个菜单。
· 菜单项
JComponent类的子类JMenuItem负责创建菜单项,即JMenuItem的一个实例就是一个菜单项。
2_1、运行效果如下所示
2_2、源代码
Tetres_windows.java
/*
* 俄罗斯方块的窗体
*/
//import javax.swing.*;
//import java.awt.*;
public class Tetres_windows {
public static void main(String[] args) {
WindowMenu win = new WindowMenu(\”俄罗斯方块\”,200,30,900,1000);
}
}
WindowMenu.java
/*
* 俄罗斯方块的菜单
*/
import javax.swing.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.JFrame.*;
public class WindowMenu extends JFrame {
JMenuBar menubar;
JMenu menu0,menu1,menu2,subMenu;
JMenuItem item1,item2,item3;
public WindowMenu(String s,int x,int y,int w,int h) {
init(s);
setLocation(x,y);
setSize(w,h);
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
void init(String s) {
setTitle(s);
menubar = new JMenuBar();
menu0 = new JMenu(\”游戏\”); //菜单栏的第一个选项
item1 = new JMenuItem(\”新游戏(new)\”);
item2 = new JMenuItem(\”重新开始\”);
menu0.add(item1);
menu0.addSeparator(); //设置子菜单之间的分割线
menu0.add(item2);
menu0.addSeparator(); //设置子菜单之间的分割线
subMenu = new JMenu(\”难度等级\”);
menu0.add(subMenu);
subMenu.add(new JMenuItem(\”初级\”));
subMenu.add(new JMenuItem(\”中级\”));
subMenu.add(new JMenuItem(\”高级\”));
menu0.addSeparator();
item3 = new JMenuItem(\”退出\”);
menu0.add(item3);
menubar.add(menu0);
menu1 = new JMenu(\”编辑\”); //菜单栏的第二个选项
item1 = new JMenuItem(\”后退一步\”);
menu1.add(item1);
menu1.addSeparator(); //设置子菜单之间的分割线
item2 = new JMenuItem(\”前进一步\”);
menu1.add(item2);
menubar.add(menu1);
menu2 = new JMenu(\”关于\”);
item1 = new JMenuItem(\”作者:rwxian\”);
menu2.add(item1);
menu2.addSeparator();
item2 = new JMenuItem(\”版本:v1.0\”);
menu2.add(item2);
menubar.add(menu2);
setJMenuBar(menubar);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。