实验8javaFX程序设计_第1页
实验8javaFX程序设计_第2页
实验8javaFX程序设计_第3页
实验8javaFX程序设计_第4页
实验8javaFX程序设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、山西大学计算机与信息技术学院实验报告姓 名苏文杰学 号201601001026专业班级计算机科学与技术三班 课程名称 java实验实验日期2017/12/4 成 绩指导教师杨陟卓 批改日期实验名称实验 8 javafx程序设计一、实验目的掌握常用gui控制组件及其事件处理。 二、实验内容1编程包含一个标签和一个按钮,单击按钮时,标签的内容在“你好”和“再见”之间切换。分别用本类(该类自身),外部类,内部类,匿名内部类,以及lambda表达式完成。程序代码:package sd8;import java.awt.gridlayout;import java.awt.event.mouseeven

2、t;import java.awt.event.mouselistener;import javax.swing.jbutton;import javax.swing.jframe;import javax.swing.jlabel;public class test extends jframe implements mouselistener private jlabel label = new jlabel("你好");private jbutton btn = new jbutton("ok");public test()setlayout(ne

3、w gridlayout(2, 1);setbounds(200, 200, 250, 250);add(label);add(btn);btn.addmouselistener(this);super.setdefaultcloseoperation(jframe.exit_on_close);setvisible(true);pack();public static void main(string args) new test();new thread() -> new test().start();public void mouseclicked(mouseevent e) if

4、(label.gettext().equals("你好")label.settext("再见");elselabel.settext("你好");public void mouseentered(mouseevent e) public void mouseexited(mouseevent e) public void mousepressed(mouseevent e) public void mousereleased(mouseevent e) 运行结果贴图:2编程包含一个文本框和一个文本区域,文本框内容改变时,将文本框中的内

5、容显示在文本区域中;在文本框中按回车键时,清空文本区域的内容。程序代码:package sd2;import java.awt.color; import java.awt.gridlayout; import java.awt.event.keyevent; import java.awt.event.keylistener; import javax.swing.jframe; import javax.swing.jpanel; import javax.swing.jtextarea; import javax.swing.jtextfield; import javax.swing.

6、border.titledborder;public class showtext extends jframe private static final long serialversionuid = 1l; private jtextfield text1; private jtextarea text2; public showtext() super("tetx show"); jpanel p1 = new jpanel(); p1.setbackground(color.white); p1.setborder(new titledborder("文本

7、框"); text1 = new jtextfield(10); text1.addkeylistener(new textlistener(); p1.add(text1); jpanel p2 = new jpanel(); p2.setbackground(color.white); p2.setborder(new titledborder("文本区域"); text2 = new jtextarea("原文本", 10, 10); text2.setlinewrap(true); text2.seteditable(false); p

8、2.add(text2); setlayout(new gridlayout(2, 1, 0, 5); add(p1); add(p2); setsize(200, 200); setvisible(true); this.setlocationrelativeto(null); setdefaultcloseoperation(jframe.exit_on_close); private class textlistener implements keylistener public void keypressed(keyevent e) public void keyreleased(ke

9、yevent e) if (e.getkeychar() != keyevent.vk_enter) text2.settext(text1.gettext(); public void keytyped(keyevent e) if (e.getkeychar() = keyevent.vk_enter) text2.settext(null); public static void main(string args) jframe frame = new showtext(); 运行结果贴图:3编程包含一个复选按钮和一个普通按钮,复选按钮选中时,普通按钮的背景色为青色,未选中时为灰色。程序

10、代码:package sd3;import java.awt.color; import java.awt.gridlayout; import java.awt.event.itemevent; import java.awt.event.itemlistener; import javax.swing.jbutton; import javax.swing.jcheckbox; import javax.swing.jframe; import javax.swing.jpanel; public class changebuttoncolor extends jframe private

11、 static final long serialversionuid = 1l; private jbutton button; private jcheckbox checkbox; public changebuttoncolor() super("改变按钮颜色"); jpanel p1 = new jpanel(); p1.setbackground(color.white); setlayout(new gridlayout(2, 1); button = new jbutton("hello"); button.setsize(20, 20)

12、; button.setbackground(color.gray); p1.add(button); jpanel p2 = new jpanel(); p2.setbackground(color.blue); checkbox = new jcheckbox(); checkbox.additemlistener(new checkboxlistener(); p2.add(checkbox); add(p1); add(p2); setsize(200, 200); setvisible(true); this.setlocationrelativeto(null); setdefau

13、ltcloseoperation(jframe.exit_on_close); private class checkboxlistener implements itemlistener public void itemstatechanged(itemevent e) if (checkbox.isselected() button.setbackground(color.cyan); else button.setbackground(color.gray); public static void main(string args) changebuttoncolor b = new c

14、hangebuttoncolor(); 运行结果贴图:4编程显示当前鼠标的位置坐标。程序代码:package sd4;import java.awt.color; import java.awt.event.mouseevent; import java.awt.event.mousemotionlistener; import javax.swing.jbutton; import javax.swing.jframe; public class locatemouse extends jframe private jbutton location; public locatemouse()

15、 super("寻找鼠标位置"); location = new jbutton("显示鼠标位置"); location.setsize(20, 10); add(location); location.addmousemotionlistener(new mousemotionlistener() public void mousedragged(mouseevent e) public void mousemoved(mouseevent e) location.settext("鼠标在(" + e.getx() + "

16、," + e.gety() + ")"); ); setsize(300, 200); setlocationrelativeto(null); setvisible(true); location.setbackground(color.white); setdefaultcloseoperation(jframe.exit_on_close); public static void main(string args) locatemouse mouse = new locatemouse(); 运行结果贴图:5. 编写程序,实现使用键盘上的上下左右箭头控制界面

17、上图片的移动。移动到边界时从界面另一侧出现。移动过程中显示另一个图片,停止时恢复原来的图片。程序代码:package sd5;import java.awt.color; import java.awt.event.keyevent;import java.awt.event.keylistener; import javax.swing.imageicon;import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; public class moveimage extends jframe

18、private imageicon oneicon = new imageicon("c:users潘desktoptimg.jpg"); private imageicon twoicon = new imageicon("c:users潘picturescamera roll1.jpg"); private jlabel label; jpanel p; public moveimage() super("image移动"); setsize(500, 500); setlocationrelativeto(null); labe

19、l = new jlabel(oneicon); p = new jpanel(); setcontentpane(p); p.setlayout(null); this.addkeylistener(new panellistener(); label.setbounds(0, 0, 100, 100); p.add(label); p.setbackground(color.white); setvisible(true); setdefaultcloseoperation(jframe.exit_on_close); private class panellistener impleme

20、nts keylistener public void keypressed(keyevent e) label.seticon(twoicon); int x = label.getx(); int y = label.gety(); int w = p.getwidth(); int h = p.getheight(); if (e.getkeycode() = keyevent.vk_up) -y; if (y <= 0) y = h; label.setbounds(x, y, 100, 100); else if (e.getkeycode() = keyevent.vk_do

21、wn) +y; if (y >= h) y = 0; label.setbounds(x, y, 100, 100); else if (e.getkeycode() = keyevent.vk_left) x-; if (x <= 0) x = w; label.setbounds(x, y, 100, 100); else if (e.getkeycode() = keyevent.vk_right) x+; if (x >= w) x = 0; label.setbounds(x, y, 100, 100); public void keyreleased(keyeve

22、nt e) if (e.getkeycode() = keyevent.vk_up | e.getkeycode() = keyevent.vk_down | e.getkeycode() = keyevent.vk_left | e.getkeycode() = keyevent.vk_right) label.seticon(oneicon); public void keytyped(keyevent e) public static void main(string args) moveimage m = new moveimage(); 运行结果贴图:移动前移动中移动后移动末尾6 绘

23、制如下形式的一个二叉树。程序代码:package tree; import java.awt.color; import java.awt.font; import java.awt.graphics; import java.util.list; import javax.swing.jpanel; suppresswarnings("serial")public class treepanel extends jpanel private node tree; /保存整棵树 private int nodewidth = 20; /每个结点的宽度 private int

24、 nodeheight = 20; /每个结点的高度 private int vdistance = 50; /每2个结点的垂直距离 private int hdistance = 30; /每2个结点的水平距离 private int starty = 200; /根结点的y,默认距离顶部200像素 private int startx = 0; /根结点的x,默认水平居中对齐 private int childalignways; /子对齐方式 public static int child_align_absolute = 0; /相对panel居中 public static int

25、child_align_relative = 1; /相对父结点居中 private font font = new font("微软雅黑",font.bold,20); /描述结点的字体 private color nodecolor = color.white; /结点背景颜色 private color linklinecolor = color.black; /结点连线颜色 private color stringcolor = color.black; /结点描述文字的颜色 / 默认构造 public treepanel() this(null,child_ali

26、gn_absolute); /根据传入的node绘制树,以绝对居中的方式绘制 / param n 要绘制的树 public treepanel(node n) this(n,child_align_absolute); /* 1 设置要绘制时候的对齐策略 2 param childalignways 对齐策略 3 see tree.treepanel#child_align_relative 4 see tree.treepanel#child_align_absolute */ public treepanel(int childalignways) this(null,childalign

27、ways); /* 1根据子对齐策略childalignways绘制的树的根结点n 2 param n 要绘制的树的根结点 3 param childalignways 对齐策略 */ public treepanel(node n, int childalignways) super(); /settree(n); this.childalignways = childalignways; /* 1 设置用于绘制的树 2 param n 用于绘制的树的 */ public void settree(node n) tree = n; /重写,调用自己的绘制方法 public void pai

28、ntcomponent(graphics g) startx = (getwidth()-nodewidth)/2; super.paintcomponent(g); g.setfont(font); drawallnode(tree, startx, g); /* 1 递归绘制整棵树 2 param n 被绘制的node 3 param xpos 根节点的绘制x位置 4 param g 绘图上下文环境 */ public string tostring() return "a" public void drawallnode(node n, int x, graphics

29、 g) int y = n.getlayer()*(vdistance+nodeheight)+starty; int fonty = y + nodeheight - 4; g.setcolor(nodecolor); g.fillrect(x, y, nodewidth, nodeheight); /画结点的格子 g.setcolor(stringcolor); g.drawstring(n.getname(), x, fonty); /画结点的名字 if(n.haschild() list<node> c = n.getchilds(); int size = n.getch

30、ilds().size(); int tempposx = childalignways = child_align_relative ? x+nodewidth/2 - (size*(nodewidth+hdistance)-hdistance)/2 : (getwidth() - size*(nodewidth+hdistance)+hdistance)/2; int i = 0; for(node node : c) int newx = tempposx+(nodewidth+hdistance)*i; /孩子结点起始x g.setcolor(linklinecolor); g.dra

31、wline(x+nodewidth/2, y+nodeheight, newx+nodewidth/2, y+nodeheight+vdistance); /画连接结点的线 drawallnode(node, newx, g); i+; public color getnodecolor() return nodecolor; /* 1 设置结点背景颜色 2 param nodecolor 结点背景颜色 */ public void setnodecolor(color nodecolor) this.nodecolor = nodecolor; public color getlinklin

32、ecolor() return linklinecolor; /* * 设置结点连接线的颜色 * param nodelinkline 结点连接线的颜色 */ public void setlinklinecolor(color nodelinkline) this.linklinecolor = nodelinkline; public color getstringcolor() return stringcolor; /* * 设置结点描述的颜色 * param stringcolor 结点描述的颜色 */ public void setstringcolor(color stringc

33、olor) this.stringcolor = stringcolor; public int getstarty() return starty; /* * 设置根结点的y位置 * param starty 根结点的y位置 */ public void setstarty(int starty) this.starty = starty; public int getstartx() return startx; /* * 设置根结点的x位置 * param startx 根结点的x位置 */ public void setstartx(int startx) this.startx = startx; package tree.demo; import java.awt.borderlayout; import java.awt.gridlayout; import javax.swing.jframe; import javax.swing.jpanel; import tree.node; import tree.treepanel; public class testdrawtree extends jframe publi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论