- 浏览: 265890 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
zwhc:
finalerboy 写道有问题的。。。而且问题多得很,你自己 ...
将数字转为指定长度的字符串,如果位数不够,添加前缀 0 -
finalerboy:
有问题的。。。而且问题多得很,你自己试试
for(int j ...
将数字转为指定长度的字符串,如果位数不够,添加前缀 0 -
a542435582:
没有考虑中文哦,实现了三分之一
以 UE 十六进制编辑模式的显示方式显示数据 -
white_crucifix:
kyfxbl 写道左耳朵耗子这人感觉挺装的,发的帖子也没什么营 ...
atoi -
kyfxbl:
左耳朵耗子这人感觉挺装的,发的帖子也没什么营养,我已经取消关注 ...
atoi
对 http://www.iteye.com/topic/650762 的代码做一些修改。
原来的代码,主要用鼠标,很麻烦。
原来的代码,主要用鼠标,很麻烦。
package house; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Point; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.awt.geom.Point2D; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Hashtable; import java.util.List; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; import twaver.Element; import twaver.Layer; import twaver.Link; import twaver.MovableFilter; import twaver.Node; import twaver.ResizableNode; import twaver.TDataBox; import twaver.TWaverConst; import twaver.TWaverUtil; import twaver.network.CanvasCushion; import twaver.network.TNetwork; public class MainUI extends JFrame { public static final boolean DEBUG = false; private Font defaultFont = new Font("微软雅黑", Font.BOLD, 12); private TDataBox box = new TDataBox(); private TNetwork network = new TNetwork(box); private Node control = new Node(); private ResizableNode house = new ResizableNode() { @Override public void setLocation(Point2D.Double location) { super.setLocation(location); int altitude = (int) (Ground.getGroundHeight() - (location.y + this.getHeight() / 2)); this.setName("海拔:" + altitude + "米"); } }; private JButton btnExit = new JButton("退出程序"); private JButton btnAdd = new JButton("添加气球"); private JButton btnCut = new JButton("剪断气球"); public MainUI() { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(1000, 850); this.setExtendedState(JFrame.MAXIMIZED_BOTH); this.setTitle("Java飞屋环游记"); TWaverUtil.centerWindow(this); this.setUndecorated(true); this.add(network, BorderLayout.CENTER); network.setToolbar(null); network.setBorder(null); network.getCanvasScrollPane().setBorder(null); network.getCanvasScrollPane().setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); network.getCanvasScrollPane().setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); final Image background = updateBackground(); network.addCanvasCushion(new CanvasCushion() { public void paint(Graphics2D g) { Point pos = getLocationOnScreen(); Point offset = new Point(-pos.x, -pos.y); g.drawImage(background, offset.x, offset.y, null); } }); btnExit.setFont(new Font("微软雅黑", Font.BOLD, 12)); network.getCanvas().add(btnExit); btnExit.setBounds(100, 100, 100, 30); btnExit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); this.house.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { if (TWaverUtil.getPropertyName(evt).equalsIgnoreCase(TWaverConst.PROPERTYNAME_LOCATION)) { int width = btnExit.getWidth(); int height = btnExit.getHeight(); //int x = house.getLocation().x + house.getWidth() / 2 - width / 2; //int y = house.getLocation().y + house.getHeight(); int x = 950; int y = 800; btnExit.setBounds(x, y, width, height); } } }); btnAdd.setFont(new Font("微软雅黑", Font.BOLD, 12)); network.getCanvas().add(btnAdd); btnAdd.setBounds(100, 100, 100, 30); btnAdd.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { addMoreBalloons(1); } }); this.house.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { if (TWaverUtil.getPropertyName(evt).equalsIgnoreCase(TWaverConst.PROPERTYNAME_LOCATION)) { int width = btnAdd.getWidth(); int height = btnAdd.getHeight(); //int x = house.getLocation().x + house.getWidth() / 2 - width / 2; //int y = house.getLocation().y + house.getHeight(); int x = 950; int y = 700; btnAdd.setBounds(x, y, width, height); } } }); btnCut.setFont(new Font("微软雅黑", Font.BOLD, 12)); network.getCanvas().add(btnCut); btnCut.setBounds(100, 100, 100, 30); btnCut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { List list = box.getAllElements(); int size = list.size(); for(int i=0; i<size; i++) { if(list.get(i) instanceof BalloonLink) { BalloonLink bl = (BalloonLink)list.get(i); //cutLink(bl, bl.getCenterLocation()); //cutLink(bl, bl.getLocation()); //cutLink(bl, new Point()); cutLink(bl, house.getLocation()); //bl.get //bl.getLocation() } } } }); this.house.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { if (TWaverUtil.getPropertyName(evt).equalsIgnoreCase(TWaverConst.PROPERTYNAME_LOCATION)) { int width = btnCut.getWidth(); int height = btnCut.getHeight(); //int x = house.getLocation().x + house.getWidth() / 2 - width / 2; //int y = house.getLocation().y + house.getHeight(); int x = 950; int y = 750; btnCut.setBounds(x, y, width, height); } } }); initComponents(); createTopo(); setupLayout(); startMocker(); } private Image updateBackground() { try { Robot robot = new Robot(); Toolkit tk = Toolkit.getDefaultToolkit(); Dimension dim = tk.getScreenSize(); Rectangle bounds = new Rectangle(0, 0, (int) dim.getWidth(), (int) dim.getHeight()); return robot.createScreenCapture(bounds); } catch (Exception ex) { ex.printStackTrace(); } return null; } private void addMoreBalloons(int num) { for (int i = 0; i < num; i++) { Balloon balloon = new Balloon(); balloon.setLocation(house.getCenterLocation()); box.addElement(balloon); box.addElement(new BalloonLink(house, balloon)); box.addElement(new InvisibleLink(control, balloon)); box.moveToUp(house); } } private void initComponents() { network.addElementDoubleClickedActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (e.getSource() == house) { addMoreBalloons(10); } } }); network.setToolbar(null); network.getCanvas().addMouseMotionListener(new MouseMotionAdapter() { private Link lastLink = null; @Override public void mouseMoved(MouseEvent e) { Element element = network.getElementPhysicalAt(e.getPoint()); if (element instanceof BalloonLink) { if (lastLink != null) { lastLink.putLinkColor(BalloonLink.LINE_COLOR); } lastLink = (Link) element; lastLink.putLinkColor(Color.darkGray); } else { if (lastLink != null && element == null) { lastLink.putLinkColor(BalloonLink.LINE_COLOR); } } } }); network.getCanvas().addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { network.getSelectionModel().clearSelection(); } @Override public void mousePressed(MouseEvent e) { Element element = network.getElementPhysicalAt(e.getPoint()); if (element instanceof BalloonLink) { final BalloonLink link = (BalloonLink) element; cutLink(link, e.getPoint()); } } }); } private void cutLink(final BalloonLink link, Point cutPoint) { final Balloon balloon = (Balloon) link.getTo(); final ResizableNode brokenPoint1 = new ResizableNode(); final ResizableNode brokenPoint2 = new ResizableNode(); //create a sky to raise balloon. final Sky sky = new Sky(); sky.setLocation(balloon.getLocation().x, 0); box.addElement(sky); //remove old balloon link. box.removeElement(link); //remove old control link. box.removeElement((Link) balloon.getAllLinks().iterator().next()); //add two sky links so balloon raise faster. final InvisibleLink skyLink1 = new InvisibleLink(sky, balloon); final InvisibleLink skyLink2 = new InvisibleLink(sky, balloon); final InvisibleLink skyLink3 = new InvisibleLink(sky, balloon); box.addElement(skyLink1); box.addElement(skyLink2); box.addElement(skyLink3); balloon.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { String propertyName = TWaverUtil.getPropertyName(evt); if (propertyName.equalsIgnoreCase(TWaverConst.PROPERTYNAME_LOCATION)) { if (balloon.getY() < 100) { box.removeElement(balloon); box.removeElement(brokenPoint1); box.removeElement(brokenPoint2); box.removeElement(skyLink1); box.removeElement(skyLink2); box.removeElement(skyLink3); box.removeElement(sky); } } } }); brokenPoint1.putCustomDraw(true); brokenPoint1.setSize(2, 2); brokenPoint1.putCustomDrawFill(false); brokenPoint1.putCustomDrawOutline(false); brokenPoint1.setCenterLocation(cutPoint); box.addElement(brokenPoint1); BrokenLink brokenLink = new BrokenLink(brokenPoint1, balloon); box.addElement(brokenLink); brokenPoint2.putCustomDraw(true); brokenPoint2.setSize(2, 2); brokenPoint2.putCustomDrawFill(false); brokenPoint2.putCustomDrawOutline(false); brokenPoint2.setCenterLocation(cutPoint); box.addElement(brokenPoint2); brokenLink = new BrokenLink(house, brokenPoint2); box.addElement(brokenLink); } private void setupLayout() { network.getSpringLayouter().setMovableFilter(new MovableFilter() { public boolean isMovable(Element element) { return element instanceof ResizableNode && !(element instanceof Sky); } }); //network.getSpringLayouter().setForceSize(0); network.getSpringLayouter().setStepSize(1); network.getSpringLayouter().setNodeRepulsionFactor(0.5); //network.getSpringLayouter().setLinkRepulsionFactor(1); network.getSpringLayouter().start(); } private void createTopo() { control.setLocation(800, 10); control.setImage("/house/control.gif"); control.putBorderVisible(false); control.setLayerID("control"); control.setToolTipText("可以拖动我哦!"); box.addElement(control); house.putLabelFont(defaultFont); house.putLabelColor(Color.white); house.putLabelBackground(TWaverUtil.getRandomAlphaColor()); house.putLabelPosition(TWaverConst.POSITION_LEFT); house.setImage("/house/house.png"); house.putBorderVisible(false); house.putLabelHighlightable(false); house.setLocation(500, 500); house.setLayerID("houes"); house.setToolTipText("双击增加气球,还可以拖动房子!"); box.addElement(house); Layer houseLayer = new Layer("house"); box.getLayerModel().addLayer(houseLayer); box.getLayerModel().moveToTop(houseLayer); Layer balloonLayer = new Layer("balloon"); box.getLayerModel().addLayer(balloonLayer); box.getLayerModel().moveToBottom(balloonLayer); Layer controlLayer = new Layer("control"); box.getLayerModel().addLayer(controlLayer); box.getLayerModel().moveToBottom(controlLayer); //install some lines on ground. for (int i = 0; i < 100; i++) { Ground ground = new Ground(); ground.setLocation(500, Ground.getGroundHeight()); box.addElement(ground); box.addElement(new InvisibleLink(ground, house)); } } private void startMocker() { Thread balloonThread = new Thread() { @Override public void run() { try { Thread.sleep(2000); for (int i = 0; i < 10; i++) { Thread.sleep(500); SwingUtilities.invokeLater(new Runnable() { public void run() { addMoreBalloons(10); } }); } } catch (InterruptedException ex) { ex.printStackTrace(); } } }; balloonThread.start(); Thread controlThread = new Thread() { @Override public void run() { final Hashtable map = new Hashtable(); try { while (true) { Thread.sleep(10000); Toolkit tk = Toolkit.getDefaultToolkit(); Dimension dim = tk.getScreenSize(); int x = TWaverUtil.getRandomInt(dim.width); int y = TWaverUtil.getRandomInt(dim.height); Point point = new Point(x, y); map.put(control, point); SwingUtilities.invokeLater(new Runnable() { public void run() { TWaverUtil.animateCenterLocation(map); } }); } } catch (InterruptedException ex) { ex.printStackTrace(); } } }; controlThread.start(); } public static void main(String[] args) { MainUI ui = new MainUI(); ui.setVisible(true); } }
相关推荐
小清新飞屋环游记背景PPT模板是一个适合创作清新风格演示文稿的资源,它包含32张精心设计的幻灯片,旨在为观众带来一种轻松、自然的视觉体验,激发人们对未知世界的探索和梦想的追求。这个模板的灵感来源于动画电影...
《飞屋环游放飞梦想PPT模板》是一款创意十足且设计精美的PPT模板,其主题灵感来源于经典的动画电影《飞屋环游记》,旨在为用户呈现出一种轻盈、梦幻的视觉效果,激发听众的无限想象。这款模板特别适合用于个人展示、...
PPT模板-飞屋环游记PPT模板.dpt
这是一套飞屋环游记背景的教育行业工作计划PPT模板,第一PPT模板网提供教育培训幻灯片模板免费下载; 关键词:蓝天白云、彩色气球、飞屋环游记PPT背景图片,动态教育培训幻灯片模板,新年工作计划PPT模板,蓝色红色...
《飞屋环游记》作为一部深受喜爱的动画电影,其中充满想象和浪漫色彩的气球与飞屋元素,搭配上清澈的蓝天白云,已成为了不少人梦想和探险的代名词。当这些元素被巧妙地应用到PPT背景图片中时,不仅能为演示文稿增添...
《飞屋环游记》这部动画电影自上映以来,便以它温暖人心的故事情节和丰富的主题寓意,赢得了世界各地观众的喜爱与认同。它不仅在技术层面,如3D视觉效果方面为观众带来了全新的观影体验,更在精神层面,对梦想、友谊...
所有的文字内容都可以根据实际需求进行替换,无论是标题还是详细描述,用户都能自由添加和修改,以适应各种汇报场景。同时,模版中的设计元素,如图表、图片和图形,都经过精心设计,确保了整体视觉效果的一致性和...
《飞屋环游记》是一部由皮克斯动画工作室制作的英语电影,讲述了主角卡尔·弗雷德里克森与一个名叫罗素的小男孩的冒险故事。在这个过程中,他们遇到了一只名叫凯文的大鸟。电影通过对话展现了角色之间的互动以及探险...
标题"蓝天白云气球飞屋环游记PPT背景图片"表明这组资源适用于创建与旅行、冒险或者梦幻氛围相关的PowerPoint演示文稿。这样的背景图片可以激发观众的想象力,为商务报告、教学材料或个人项目增添生动色彩。 首先,...
"小清新飞屋环游记背景PPT模板"就是这样一个设计精美的模板,适用于那些希望用创新和生动的方式来传达信息的人。这套模板以其独特的飞屋环游记主题,融合了清新自然风光,为观众带来一种逃离现实、追逐梦想的视觉...
"蓝天白云飞屋气球背景图片PPT模板"正是一款适合多种场合使用的背景资源,尤其对于那些需要展现轻松、愉快、自由氛围的演讲主题。这两张背景图片以蓝天白云为主题,融合了草地、绿叶、气球和飞屋等元素,呈现出一种...
5. **应用方法**:在PPT中添加背景图片,用户可以通过“设计”选项卡中的“背景样式”来更改背景,或者通过插入图片并设置其填充为幻灯片背景。此外,还可以自定义PPT模板,保存当前设计作为默认样式,以便在其他...
最近,【蓝天白云气球飞屋环游记背景图片PPT模板】因其独特性和创造性脱颖而出,为用户提供了这样一个平台。 这款模板巧妙地将迪士尼皮克斯的经典动画电影《飞屋环游记》的主题融入PPT设计之中。《飞屋环游记》是一...
这是一套飞屋环游记背景的教育行业工作计划PPT模板,第一PPT模板网提供教育培训幻灯片模板免费下载; 关键词:蓝天白云、彩色气球、飞屋环游记PPT背景图片,动态教育培训幻灯片模板,新年工作计划PPT模板,蓝色红色...
【教育行业工作计划PPT模板】是用于教育领域工作规划的一种视觉呈现工具,结合了《飞屋环游记》这一知名动画电影的主题,为教育工作者提供了一种创新且吸引人的展示方式。以下将详细解析该模板的主要组成部分及其在...
这是从tataplay尖尖的“PS教程网-tata580”上整理出来的PS教程网期刊第10期(修订版),包含寂静丛林、木刻画制作、水墨山水画、外景写生、宝宝百日照、飞屋环游记、狙击神犬等30个教程或资源下载,有兴趣的朋友可以...
这个PPT课件主题似乎与英语电影演讲有关,特别是围绕一部可能名为《飞屋环游记》(Up)的电影。这部电影是由皮克斯动画工作室制作,迪士尼发行的动画片,于2009年上映。从提供的内容来看,课件可能在讲述主角卡尔·...
从给定文件中提取的关键知识点主要集中在两个方面:一是对动画电影《飞屋环游记》的推荐与解析,二是关于人际关系(特别是友情与家庭)的感悟。 ### 《飞屋环游记》推荐与解析 #### 1. 电影简介 - **主人公**:一...