文档详情

图形用户界面教学课件讲解.ppt

发布:2021-07-25约2.49万字共106页下载文档
文本预览下载声明
菜单(一) 菜单显示项目列表,指明各种任务。 选择或单击某个选项时会打开另一个列表或子菜单。 Swing 菜单由菜单栏、菜单和菜单项构成。 菜单栏是所有菜单和菜单项的根 菜单(二) JMenuBar 是可通过 JFrame、JWindow 的根窗格添加至容器的组件。 由多个 JMenu 组成,每个 JMenu 在 JMenubar 中都表示为字符串。 JMenu 在 JMenuBar 下以文本字符串形式显示,而在用户单击它时,则以弹出式菜单显示。 JMenuItem为JMenu 中的一个组件,以文本字符串形式显示,可以具有图标,外观可以修改,如字体、颜色、背景、边框等。 菜单(三) 弹出式菜单JPopupMenu的定义和使用: 方法 用途 public JMenuItem add(JMenuItem menuItem) 将指定菜单项附加至菜单末尾 public JMenuItem add(String s) 使用指定文本新建菜单项,并将其添加至菜单末尾 public void show(Component c, int x, int y) 在组件c的坐标 (x,y) 位置显示弹出式菜单 public boolean isPopupTrigger() 确定鼠标事件是否为平台的弹出触发器 菜单以及弹出式菜单 --界面演示 典型的菜单: 菜单示例 JMenuBarDemo.java 对话框 JOptionPane对话框 是模式对话框,它提供了很多现成的对话框样式, 可以供用户直接使用。 JFileChooser对话框 提供了标准的文件的打开、保存对话框。 对话框示例 TestJOptionPane.java 绘图示例 FreeHandDraw.java FreeHandPanel.java 绘图示例 程序说明: 该程序由两个类构成,这两个类分别写在两个程序文件里,这是正规程序的写法。 程序的主体在FreeHandPanel里,其中定义了一个二维的ArrayList对象lines;在FreeHandPanel的构造方法里注册了(利用匿名内部类)MouseListener和MouseMotionListener,对鼠标事件进行了重写,将鼠标按下时和鼠标拖动时经过的点的坐标记录在lines里。 绘图示例 paintComponent是从JPanel继承的方法,要进行一些绘图的工作,必须重写这个方法。这个方法是由系统调用的,用于对Panel的表面进行绘制。在本问题中, paintComponent根据lines中的数据,将其中的坐标点连成线。 注意mouseDragged方法中的最后一句repaint(),这一句的作用是通知系统,申请对本组件进行重绘,即触发paintComponent方法。 实训项目1 对上述的涂鸦程序增加功能,可选择不同的线条颜色和不同的线条粗细来画线,选择界面可采用菜单方式、radio button、或其他图形化方式 *较高要求:能够将所画的图形存入二进制文件,重新打开文件(利用对话框),原有的图形能够显示出来。 实验题 设计如图所示的网格排序程序:界面上有3*3或4*4个按钮,其中一个上面没有数字,其余的有1-8或者1-15等数字,程序开始时,按钮数字随机排列,点击与空白按钮相邻的按钮,该按钮上的数字就移到空白按钮上。如果按钮上的数字按序排列,则显示成功信息。 * * import java.awt.*; public class ExGui { private Frame f; private Button b1; private Button b2; public static void main(String args[]) { ExGui that = new ExGui(); that.go(); } public void go() { f = new Frame(GUI example); f.setLayout(new FlowLayout()); // 设置布局管理器为FlowLayout b1 = new Button(Press Me); // 按钮上显示字符Press Me b2 = new Button(Dont Press Me); f.add(b1); f.add(b2); f.pack(); //紧凑排列,其作用相当于setSize(),即让窗口 尽量小,小到刚刚能够包容住b1、b2两个按钮 f.setVisible(true); } } * ContainerEvent 容器中增加、删除了组件 ContainerListener componentAdded(ContainerEvent) componentRemoved(C
显示全部
相似文档