实验8 javaFX程序设计.docx

上传人:b****2 文档编号:23197312 上传时间:2023-05-15 格式:DOCX 页数:25 大小:223.39KB
下载 相关 举报
实验8 javaFX程序设计.docx_第1页
第1页 / 共25页
实验8 javaFX程序设计.docx_第2页
第2页 / 共25页
实验8 javaFX程序设计.docx_第3页
第3页 / 共25页
实验8 javaFX程序设计.docx_第4页
第4页 / 共25页
实验8 javaFX程序设计.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

实验8 javaFX程序设计.docx

《实验8 javaFX程序设计.docx》由会员分享,可在线阅读,更多相关《实验8 javaFX程序设计.docx(25页珍藏版)》请在冰豆网上搜索。

实验8 javaFX程序设计.docx

实验8javaFX程序设计

盛年不重来,一日难再晨。

及时宜自勉,岁月不待人。

山西大学计算机与信息技术学院

实验报告

姓名

苏文杰

学号

201601001026

专业班级

计算机科学与技术三班

课程名称

Java实验

实验日期

2017/12/4

成绩

指导教师

杨陟卓

批改日期

实验名称

实验8JAVAFX程序设计

一、实验目的

掌握常用GUI控制组件及其事件处理。

二、实验内容

1.编程包含一个标签和一个按钮,单击按钮时,标签的内容在“你好”和“再见”之间切换。

分别用本类(该类自身),外部类,内部类,匿名内部类,以及lambda表达式完成。

程序代码:

packagesd8;

importjava.awt.GridLayout;

importjava.awt.event.MouseEvent;

importjava.awt.event.MouseListener;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

publicclassTestextendsJFrameimplementsMouseListener{

privateJLabellabel=newJLabel("你好");

privateJButtonbtn=newJButton("OK");

publicTest(){

setLayout(newGridLayout(2,1));

setBounds(200,200,250,250);

add(label);

add(btn);

btn.addMouseListener(this);

super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

pack();

}

publicstaticvoidmain(String[]args){

newTest();

newThread(()->newTest()).start();

}

publicvoidmouseClicked(MouseEvente){

if(label.getText().equals("你好")){

label.setText("再见");

}else{

label.setText("你好");

}

}

publicvoidmouseEntered(MouseEvente){}

publicvoidmouseExited(MouseEvente){}

publicvoidmousePressed(MouseEvente){}

publicvoidmouseReleased(MouseEvente){}

}

运行结果贴图:

 

2.编程包含一个文本框和一个文本区域,文本框内容改变时,将文本框中的内容显示在文本区域中;在文本框中按回车键时,清空文本区域的内容。

程序代码:

packagesd2;

importjava.awt.Color;

importjava.awt.GridLayout;

importjava.awt.event.KeyEvent;

importjava.awt.event.KeyListener;

importjavax.swing.JFrame;

importjavax.swing.JPanel;

importjavax.swing.JTextArea;

importjavax.swing.JTextField;

importjavax.swing.border.TitledBorder;

publicclassShowTextextendsJFrame{

privatestaticfinallongserialVersionUID=1L;

privateJTextFieldtext1;

privateJTextAreatext2;

publicShowText(){

super("TetxShow");

JPanelp1=newJPanel();

p1.setBackground(Color.WHITE);

p1.setBorder(newTitledBorder("文本框"));

text1=newJTextField(10);

text1.addKeyListener(newTextListener());

p1.add(text1);

JPanelp2=newJPanel();

p2.setBackground(Color.WHITE);

p2.setBorder(newTitledBorder("文本区域"));

text2=newJTextArea("原文本",10,10);

text2.setLineWrap(true);

text2.setEditable(false);

p2.add(text2);

setLayout(newGridLayout(2,1,0,5));

add(p1);

add(p2);

setSize(200,200);

setVisible(true);

this.setLocationRelativeTo(null);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

privateclassTextListenerimplementsKeyListener{

publicvoidkeyPressed(KeyEvente){}

publicvoidkeyReleased(KeyEvente){

if(e.getKeyChar()!

=KeyEvent.VK_ENTER)

text2.setText(text1.getText());

}

publicvoidkeyTyped(KeyEvente){

if(e.getKeyChar()==KeyEvent.VK_ENTER)

text2.setText(null);

}

}

publicstaticvoidmain(String[]args){JFrameframe=newShowText();

}

}

运行结果贴图:

3.编程包含一个复选按钮和一个普通按钮,复选按钮选中时,普通按钮的背景色为青色,未选中时为灰色。

程序代码:

packagesd3;

importjava.awt.Color;

importjava.awt.GridLayout;

importjava.awt.event.ItemEvent;

importjava.awt.event.ItemListener;

importjavax.swing.JButton;

importjavax.swing.JCheckBox;

importjavax.swing.JFrame;

importjavax.swing.JPanel;

publicclassChangeButtonColorextendsJFrame{

privatestaticfinallongserialVersionUID=1L;

privateJButtonbutton;

privateJCheckBoxcheckBox;

publicChangeButtonColor(){

super("改变按钮颜色");

JPanelp1=newJPanel();

p1.setBackground(Color.WHITE);

setLayout(newGridLayout(2,1));

button=newJButton("Hello");

button.setSize(20,20);

button.setBackground(Color.GRAY);

p1.add(button);

JPanelp2=newJPanel();

p2.setBackground(Color.BLUE);

checkBox=newJCheckBox();

checkBox.addItemListener(newcheckBoxListener());

p2.add(checkBox);

add(p1);

add(p2);

setSize(200,200);

setVisible(true);

this.setLocationRelativeTo(null);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

privateclasscheckBoxListenerimplementsItemListener{

publicvoiditemStateChanged(ItemEvente){

if(checkBox.isSelected())

button.setBackground(Color.CYAN);

else

button.setBackground(Color.GRAY);

}

}

publicstaticvoidmain(String[]args){

ChangeButtonColorb=newChangeButtonColor();

}

}

运行结果贴图:

 

4.编程显示当前鼠标的位置坐标。

程序代码:

packagesd4;

importjava.awt.Color;

importjava.awt.event.MouseEvent;

importjava.awt.event.MouseMotionListener;

importjavax.swing.JButton;

importjavax.swing.JFrame;

publicclassLocateMouseextendsJFrame{

privateJButtonlocation;

publicLocateMouse(){

super("寻找鼠标位置");

location=newJButton("显示鼠标位置");

location.setSize(20,10);

add(location);

location.addMouseMotionListener(newMouseMotionListener(){

publicvoidmouseDragged(MouseEvente){}

publicvoidmouseMoved(MouseEvente){

location.setText("鼠标在("+e.getX()+","+e.getY()+")");

}

});

setSize(300,200);

setLocationRelativeTo(null);

setVisible(true);

location.setBackground(Color.WHITE);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}

publicstaticvoidmain(String[]args){

LocateMousemouse=newLocateMouse();

}

}

运行结果贴图:

 

5.编写程序,实现使用键盘上的上下左右箭头控制界面上图片的移动。

移动到边界时从界面另一侧出现。

移动过程中显示另一个图片,停止时恢复原来的图片。

程序代码:

packagesd5;

importjava.awt.Color;

importjava.awt.event.KeyEvent;

importjava.awt.event.KeyListener;

importjavax.swing.ImageIcon;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

importjavax.swing.JPanel;

publicclassMoveImageextendsJFrame{

privateImageIcononeIcon=newImageIcon("C:

\\Users\\潘\\Desktop\\timg.jpg");

privateImageIcontwoIcon=newImageIcon("C:

\\Users\\潘\\Pictures\\CameraRoll\\1.jpg");

privateJLabellabel;

JPanelp;

publicMoveImage(){

super("Image移动");

setSize(500,500);

setLocationRelativeTo(null);

label=newJLabel(oneIcon);

p=newJPanel();

setContentPane(p);

p.setLayout(null);

this.addKeyListener(newPanelListener());

label.setBounds(0,0,100,100);

p.add(label);

p.setBackground(Color.WHITE);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}

privateclassPanelListenerimplementsKeyListener{

publicvoidkeyPressed(KeyEvente){

label.setIcon(twoIcon);

intx=label.getX();

inty=label.getY();

intw=p.getWidth();

inth=p.getHeight();

if(e.getKeyCode()==KeyEvent.VK_UP){

--y;

if(y<=0)

y=h;

label.setBounds(x,y,100,100);

}

elseif(e.getKeyCode()==KeyEvent.VK_DOWN){

++y;

if(y>=h)

y=0;

label.setBounds(x,y,100,100);

}

elseif(e.getKeyCode()==KeyEvent.VK_LEFT){

x--;

if(x<=0)

x=w;

label.setBounds(x,y,100,100);

}elseif(e.getKeyCode()==KeyEvent.VK_RIGHT){

x++;

if(x>=w)

x=0;

label.setBounds(x,y,100,100);

}

}

publicvoidkeyReleased(KeyEvente){

if(e.getKeyCode()==KeyEvent.VK_UP||e.getKeyCode()==KeyEvent.VK_DOWN||e.getKeyCode()==KeyEvent.VK_LEFT||e.getKeyCode()==KeyEvent.VK_RIGHT)

label.setIcon(oneIcon);

}

publicvoidkeyTyped(KeyEvente){}

}

publicstaticvoidmain(String[]args){

MoveImagem=newMoveImage();

}

}

运行结果贴图:

移动前

移动中

 

移动后

移动末尾

 

6绘制如下形式的一个二叉树。

程序代码:

packagetree;

importjava.awt.Color;

importjava.awt.Font;

importjava.awt.Graphics;

importjava.util.List;

importjavax.swing.JPanel;

@SuppressWarnings("serial")

publicclassTreePanelextendsJPanel{

privateNodetree;//保存整棵树

privateintnodeWidth=20;//每个结点的宽度

privateintnodeHeight=20;//每个结点的高度

privateintvDistance=50;//每2个结点的垂直距离

privateinthDIstance=30;//每2个结点的水平距离

privateintstartY=200;//根结点的Y,默认距离顶部200像素

privateintstartX=0;//根结点的X,默认水平居中对齐

privateintchildAlignWays;//子对齐方式

publicstaticintCHILD_ALIGN_ABSOLUTE=0;//相对Panel居中

publicstaticintCHILD_ALIGN_RELATIVE=1;//相对父结点居中

privateFontfont=newFont("微软雅黑",Font.BOLD,20);//描述结点的字体

privateColornodeColor=Color.WHITE;//结点背景颜色

privateColorlinkLineColor=Color.BLACK;//结点连线颜色

privateColorstringColor=Color.BLACK;//结点描述文字的颜色

//默认构造

publicTreePanel(){

this(null,CHILD_ALIGN_ABSOLUTE);

}

//根据传入的Node绘制树,以绝对居中的方式绘制

//@paramn要绘制的树

publicTreePanel(Noden){

this(n,CHILD_ALIGN_ABSOLUTE);

}

/**

1设置要绘制时候的对齐策略

2@paramchildAlignWays对齐策略

3@seetree.TreePanel#CHILD_ALIGN_RELATIVE

4@seetree.TreePanel#CHILD_ALIGN_ABSOLUTE

*/

publicTreePanel(intchildAlignWays){

this(null,childAlignWays);

}

/**

1根据子对齐策略childAlignWays绘制的树的根结点n

2@paramn要绘制的树的根结点

3@paramchildAlignWays对齐策略

*/

publicTreePanel(Noden,intchildAlignWays){

super();

//setTree(n);

this.childAlignWays=childAlignWays;

}

/**

1设置用于绘制的树

2@paramn用于绘制的树的

*/

publicvoidsetTree(Noden){

tree=n;

}

//重写,调用自己的绘制方法

publicvoidpaintComponent(Graphicsg){

startX=(getWidth()-nodeWidth)/2;

super.paintComponent(g);

g.setFont(font);

drawAllNode(tree,startX,g);

}

/**

1递归绘制整棵树

2@paramn被绘制的Node

3@paramxPos根节点的绘制X位置

4@paramg绘图上下文环境

*/

publicStringtoString(){

return"a";

}

publicvoiddrawAllNode(Noden,intx,Graphicsg){

inty=n.getLayer()*(vDistance+nodeHeight)+startY;

intfontY=y+nodeHeight-4;

g.setColor(nodeColor);

g.fillRect(x,y,nodeWidth,nodeHeight);//画结点的格子

g.setColor(stringColor);

g.drawString(n.getName(),x,fontY);//画结点的名字

if(n.hasChild()){

Listc=n.getChilds();

intsize=n.getChilds().size();

inttempPosx=childAlignWays==CHILD_ALIGN_RELATIVE

?

x+no

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1