|
使用Java的优势在于网络应用方面,但Java也提供了强大的用于开发桌面程序的API,它们包含在javax.swing包中.使用这个包可以编写简单的Java桌面应用程序.点击链接加入群聊【java《学习》+交流】:https://jq.qq.com/?_wv=1027&k=5hwRg0C 523401738 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); } } |